MCPcopy Create free account
hub / github.com/DaedalusX64/daedalus / make_shader_program

Function make_shader_program

Source/SysGL/HLEGraphics/RendererGL.cpp:241–291  ·  view source on GitHub ↗

Creates a program object using the specified vertex and fragment text */

Source from the content-addressed store, hash-verified

239/* Creates a program object using the specified vertex and fragment text
240 */
241static GLuint make_shader_program(const char ** vertex_lines, size_t num_vertex_lines,
242 const char ** fragment_lines, size_t num_fragment_lines)
243{
244 GLuint program = 0u;
245 GLint program_ok;
246 GLuint vertex_shader = 0u;
247 GLuint fragment_shader = 0u;
248 GLsizei log_length;
249 char info_log[8192];
250
251 vertex_shader = make_shader(GL_VERTEX_SHADER, vertex_lines, num_vertex_lines);
252 if (vertex_shader != 0u)
253 {
254 fragment_shader = make_shader(GL_FRAGMENT_SHADER, fragment_lines, num_fragment_lines);
255 if (fragment_shader != 0u)
256 {
257 /* make the program that connect the two shader and link it */
258 program = glCreateProgram();
259 if (program != 0u)
260 {
261 /* attach both shader and link */
262 glAttachShader(program, vertex_shader);
263 glAttachShader(program, fragment_shader);
264
265 glLinkProgram(program);
266 glGetProgramiv(program, GL_LINK_STATUS, &program_ok);
267
268 if (program_ok != GL_TRUE)
269 {
270 fprintf(stderr, "ERROR, failed to link shader program\n");
271 glGetProgramInfoLog(program, 8192, &log_length, info_log);
272 fprintf(stderr, "ERROR: \n%s\n\n", info_log);
273 glDeleteProgram(program);
274 glDeleteShader(fragment_shader);
275 glDeleteShader(vertex_shader);
276 program = 0u;
277 }
278 }
279 }
280 else
281 {
282 fprintf(stderr, "ERROR: Unable to load fragment shader\n");
283 glDeleteShader(vertex_shader);
284 }
285 }
286 else
287 {
288 fprintf(stderr, "ERROR: Unable to load vertex shader\n");
289 }
290 return program;
291}
292
293
294static const char * kRGBParams32[] =

Callers 1

GetShaderForConfigFunction · 0.85

Calls 1

make_shaderFunction · 0.85

Tested by

no test coverage detected