static bool gl_glsl_compile_programs( glsl_shader_data_t *glsl, struct shader_program_glsl_data *program) { unsigned i; for (i = 0; i < glsl->shader->passes; i++) { struct shader_program_info shader_prog_info; const char *vertex = NULL; const char *fragment = NULL; struct video_shader_pass *pass = (struct video_shader_pass*) &glsl->shader->pass[i]; if (!pass) continue; /* If we load from GLSLP (CGP), * load the file here, and pretend * we were really using XML all along. */ if ( !string_is_empty(pass->source.path) && !gl_glsl_load_source_path(pass, pass->source.path)) { RARCH_ERR("Failed to load GLSL shader: %s.\n", pass->source.path); return false; } *pass->source.path = '\0'; vertex = pass->source.string.vertex; fragment = pass->source.string.fragment; shader_prog_info.vertex = vertex; shader_prog_info.fragment = fragment; shader_prog_info.is_file = false; if (!gl_glsl_compile_program(glsl, i, &program[i], &shader_prog_info)) { RARCH_ERR("Failed to create GL program #%u.\n", i); return false; } } return true; }
static bool gl_glsl_compile_programs( glsl_shader_data_t *glsl, GLuint *gl_prog) { unsigned i; for (i = 0; i < glsl->shader->passes; i++) { const char *vertex = NULL; const char *fragment = NULL; struct video_shader_pass *pass = (struct video_shader_pass*) &glsl->shader->pass[i]; /* If we load from GLSLP (CGP), * load the file here, and pretend * we were really using XML all along. */ if (*pass->source.path && !gl_glsl_load_source_path( pass, pass->source.path)) { RARCH_ERR("Failed to load GLSL shader: %s.\n", pass->source.path); return false; } *pass->source.path = '\0'; vertex = pass->source.string.vertex; fragment = pass->source.string.fragment; gl_prog[i] = gl_glsl_compile_program(glsl, vertex, fragment, i); if (!gl_prog[i]) { RARCH_ERR("Failed to create GL program #%u.\n", i); return false; } } return true; }