static bool load_program( cg_shader_data_t *cg, unsigned idx, const char *prog, bool path_is_file) { bool ret = true; char *listing_f = NULL; char *listing_v = NULL; unsigned i, argc = 0; const char *argv[2 + GFX_MAX_SHADERS]; argv[argc++] = "-DPARAMETER_UNIFORM"; for (i = 0; i < GFX_MAX_SHADERS; i++) { if (*(cg->cg_alias_define[i])) argv[argc++] = cg->cg_alias_define[i]; } argv[argc] = NULL; if (path_is_file) { cg->prg[idx].fprg = cgCreateProgramFromFile(cg->cgCtx, CG_SOURCE, prog, cg->cgFProf, "main_fragment", argv); SET_LISTING(cg, f); cg->prg[idx].vprg = cgCreateProgramFromFile(cg->cgCtx, CG_SOURCE, prog, cg->cgVProf, "main_vertex", argv); SET_LISTING(cg, v); } else { cg->prg[idx].fprg = cgCreateProgram(cg->cgCtx, CG_SOURCE, prog, cg->cgFProf, "main_fragment", argv); SET_LISTING(cg, f); cg->prg[idx].vprg = cgCreateProgram(cg->cgCtx, CG_SOURCE, prog, cg->cgVProf, "main_vertex", argv); SET_LISTING(cg, v); } if (!cg->prg[idx].fprg || !cg->prg[idx].vprg) { RARCH_ERR("CG error: %s\n", cgGetErrorString(cgGetError())); if (listing_f) RARCH_ERR("Fragment:\n%s\n", listing_f); else if (listing_v) RARCH_ERR("Vertex:\n%s\n", listing_v); ret = false; goto end; } cgGLLoadProgram(cg->prg[idx].fprg); cgGLLoadProgram(cg->prg[idx].vprg); end: free(listing_f); free(listing_v); return ret; }
static bool load_program(unsigned index, const char *prog, bool path_is_file) { bool ret = true; char *listing_f = NULL; char *listing_v = NULL; if (path_is_file) { prg[index].fprg = cgCreateProgramFromFile(cgCtx, CG_SOURCE, prog, cgFProf, "main_fragment", cg_arguments); SET_LISTING(f); prg[index].vprg = cgCreateProgramFromFile(cgCtx, CG_SOURCE, prog, cgVProf, "main_vertex", cg_arguments); SET_LISTING(v); } else { prg[index].fprg = cgCreateProgram(cgCtx, CG_SOURCE, prog, cgFProf, "main_fragment", cg_arguments); SET_LISTING(f); prg[index].vprg = cgCreateProgram(cgCtx, CG_SOURCE, prog, cgVProf, "main_vertex", cg_arguments); SET_LISTING(v); } if (!prg[index].fprg || !prg[index].vprg) { RARCH_ERR("CG error: %s\n", cgGetErrorString(cgGetError())); if (listing_f) RARCH_ERR("Fragment:\n%s\n", listing_f); else if (listing_v) RARCH_ERR("Vertex:\n%s\n", listing_v); ret = false; goto end; } cgGLLoadProgram(prg[index].fprg); cgGLLoadProgram(prg[index].vprg); end: free(listing_f); free(listing_v); return ret; }