diff --git a/panda/src/glstuff/glCgShaderContext_src.cxx b/panda/src/glstuff/glCgShaderContext_src.cxx index 959982fd52..167d7ed0d8 100644 --- a/panda/src/glstuff/glCgShaderContext_src.cxx +++ b/panda/src/glstuff/glCgShaderContext_src.cxx @@ -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); diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index bd797c249f..36ff0dec8e 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -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