MCPcopy Create free account
hub / github.com/BladeTransformerLLC/gauzilla / create_glsl_program

Function create_glsl_program

src/renderer.rs:196–253  ·  view source on GitHub ↗
(
    gl: &Context,
    vs_file: &str,
    fs_file: &str,
    error_flag: &Arc<AtomicBool>,
    error_msg: &Arc<Mutex<String>>
)

Source from the content-addressed store, hash-verified

194
195
196fn create_glsl_program(
197 gl: &Context,
198 vs_file: &str,
199 fs_file: &str,
200 error_flag: &Arc<AtomicBool>,
201 error_msg: &Arc<Mutex<String>>
202) -> context::Program {
203 unsafe {
204 let vert_shader = gl.create_shader(context::VERTEX_SHADER)
205 .expect("Failed creating vertex shader");
206 let frag_shader = gl.create_shader(context::FRAGMENT_SHADER)
207 .expect("Failed creating fragment shader");
208
209 gl.shader_source(vert_shader, vs_file);
210 gl.shader_source(frag_shader, fs_file);
211 gl.compile_shader(vert_shader);
212 gl.compile_shader(frag_shader);
213
214 let id = gl.create_program()
215 .expect("Failed creating program");
216
217 gl.attach_shader(id, vert_shader);
218 gl.attach_shader(id, frag_shader);
219 gl.link_program(id);
220
221 if !gl.get_program_link_status(id) {
222 let log = gl.get_shader_info_log(vert_shader);
223 if !log.is_empty() {
224 set_error_for_egui(
225 error_flag, error_msg,
226 format!("ERROR: gl.get_program_link_status(): {}", log)
227 );
228 }
229 let log = gl.get_shader_info_log(frag_shader);
230 if !log.is_empty() {
231 set_error_for_egui(
232 error_flag, error_msg,
233 format!("ERROR: gl.get_program_link_status(): {}", log)
234 );
235 }
236 let log = gl.get_program_info_log(id);
237 if !log.is_empty() {
238 set_error_for_egui(
239 error_flag, error_msg,
240 format!("ERROR: gl.get_program_link_status(): {}", log)
241 );
242 }
243 //unreachable!();
244 } else {
245 gl.detach_shader(id, vert_shader);
246 gl.detach_shader(id, frag_shader);
247 gl.delete_shader(vert_shader);
248 gl.delete_shader(frag_shader);
249 }
250
251 return id;
252 }
253}

Callers 1

initMethod · 0.85

Calls 1

set_error_for_eguiFunction · 0.85

Tested by

no test coverage detected