MCPcopy Create free account
hub / github.com/cococry/leif / shader_prg_create

Function shader_prg_create

leif.c:315–346  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

313}
314
315LfShader shader_prg_create(const char* vert_src, const char* frag_src) {
316 // Creating vertex & fragment shader with the shader API
317 uint32_t vertex_shader = shader_create(GL_VERTEX_SHADER, vert_src);
318 uint32_t fragment_shader = shader_create(GL_FRAGMENT_SHADER, frag_src);
319
320 // Creating & linking the shader program with OpenGL
321 LfShader prg;
322 prg.id = glCreateProgram();
323 glAttachShader(prg.id, vertex_shader);
324 glAttachShader(prg.id, fragment_shader);
325 glLinkProgram(prg.id);
326
327 // Check for linking errors
328 int32_t linked;
329 glGetProgramiv(prg.id, GL_LINK_STATUS, &linked);
330
331 if(!linked) {
332 LF_ERROR("Failed to link shader program.");
333 char info[512];
334 glGetProgramInfoLog(prg.id, 512, NULL, info);
335 LF_INFO("%s", info);
336 glDeleteShader(vertex_shader);
337 glDeleteShader(fragment_shader);
338 glDeleteProgram(prg.id);
339 return prg;
340 }
341
342 // Delete the shaders after
343 glDeleteShader(vertex_shader);
344 glDeleteShader(fragment_shader);
345 return prg;
346}
347
348void shader_set_mat(LfShader prg, const char* name, mat4 mat) {
349 glUniformMatrix4fv(glGetUniformLocation(prg.id, name), 1, GL_FALSE, mat[0]);

Callers 1

renderer_initFunction · 0.85

Calls 1

shader_createFunction · 0.85

Tested by

no test coverage detected