Fix crash if Cg is supported but GLSL is not

This commit is contained in:
rdb 2015-11-21 03:17:58 +01:00
parent 0a9f9887f9
commit c80fd20208
2 changed files with 17 additions and 1 deletions

View File

@ -108,7 +108,7 @@ CLP(CgShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderConte
}
}
if (_cg_program != 0) {
if (_cg_program != 0 && _glgsg->_supports_glsl) {
if (cgGetProgramProfile(_cg_program) == CG_PROFILE_GLSLC) {
_glsl_program = cgGLGetProgramID(_cg_program);

View File

@ -1562,6 +1562,22 @@ reset() {
_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)
get_extension_func("glPatchParameteri");
}
} else if (_supports_basic_shaders) {
// We don't support GLSL, but we support ARB programs.
_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)
get_extension_func("glDisableVertexAttribArrayARB");
_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)
get_extension_func("glEnableVertexAttribArrayARB");
_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)
get_extension_func("glVertexAttrib4fvARB");
_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)
get_extension_func("glVertexAttrib4dvARB");
_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)
get_extension_func("glVertexAttribPointerARB");
_glVertexAttribIPointer = NULL;
_glVertexAttribLPointer = NULL;
}
#endif