Fix build errors for mainstream OpenGL

This commit is contained in:
rdb 2009-07-02 15:19:37 +00:00
parent dc6ccc27a1
commit ebf6291663
3 changed files with 11 additions and 8 deletions

View File

@ -897,7 +897,7 @@ reset() {
get_extension_func(GLPREFIX_QUOTED, "DeleteShader"); get_extension_func(GLPREFIX_QUOTED, "DeleteShader");
_glDetachShader = (PFNGLDETACHSHADERPROC) _glDetachShader = (PFNGLDETACHSHADERPROC)
get_extension_func(GLPREFIX_QUOTED, "DetachShader"); get_extension_func(GLPREFIX_QUOTED, "DetachShader");
_glDisableVertexAttribArray (PFNGLDISABLEVERTEXATTRIBARRAYPROC) _glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)
get_extension_func(GLPREFIX_QUOTED, "DisableVertexAttribArray"); get_extension_func(GLPREFIX_QUOTED, "DisableVertexAttribArray");
_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC) _glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)
get_extension_func(GLPREFIX_QUOTED, "EnableVertexAttribArray"); get_extension_func(GLPREFIX_QUOTED, "EnableVertexAttribArray");

View File

@ -308,7 +308,7 @@ CLP(ShaderContext)::
// vertex program handles or Cg contexts). // vertex program handles or Cg contexts).
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
void CLP(ShaderContext):: void CLP(ShaderContext)::
release_resources(const GSG *gsg) { release_resources(GSG *gsg) {
#ifdef HAVE_CG #ifdef HAVE_CG
if (_cg_context) { if (_cg_context) {
cgDestroyContext(_cg_context); cgDestroyContext(_cg_context);
@ -320,7 +320,7 @@ release_resources(const GSG *gsg) {
} }
if (gsg) { if (gsg) {
gsg->report_my_gl_errors(); gsg->report_my_gl_errors();
} if (glGetError() != GL_NO_ERROR) { } else if (glGetError() != GL_NO_ERROR) {
GLCAT.error() << "GL error in ShaderContext destructor\n"; GLCAT.error() << "GL error in ShaderContext destructor\n";
} }
#endif #endif
@ -347,6 +347,8 @@ release_resources(const GSG *gsg) {
gsg->_glDeleteProgram(_glsl_program); gsg->_glDeleteProgram(_glsl_program);
_glsl_program = 0; _glsl_program = 0;
} }
gsg->report_my_gl_errors();
} }
//////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////
@ -507,7 +509,7 @@ disable_shader_vertex_arrays(GSG *gsg) {
if (_shader->get_language() == Shader::SL_GLSL) { if (_shader->get_language() == Shader::SL_GLSL) {
for (int i=0; i<(int)_shader->_var_spec.size(); i++) { for (int i=0; i<(int)_shader->_var_spec.size(); i++) {
glDisableVertexAttribArray(i); gsg->_glDisableVertexAttribArray(i);
} }
} }
#ifdef HAVE_CG #ifdef HAVE_CG
@ -588,8 +590,8 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
#ifndef OPENGLES_2 #ifndef OPENGLES_2
glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_VERTEX_ARRAY);
#endif #endif
glEnableVertexAttribArray(i); gsg->_glEnableVertexAttribArray(i);
glVertexAttribPointer(i, num_values, gsg->get_numeric_type(numeric_type), gsg->_glVertexAttribPointer(i, num_values, gsg->get_numeric_type(numeric_type),
GL_FALSE, stride, client_pointer + start); GL_FALSE, stride, client_pointer + start);
#ifndef OPENGLES_2 #ifndef OPENGLES_2
glDisableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_VERTEX_ARRAY);
@ -606,6 +608,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg,
} }
#ifdef HAVE_CG #ifdef HAVE_CG
else if (_shader->get_language() == Shader::SL_Cg) { else if (_shader->get_language() == Shader::SL_Cg) {
CGparameter p = _cg_parameter_map[_shader->_var_spec[i]._id._seqno];
cgGLDisableClientState(p); cgGLDisableClientState(p);
} }
#endif #endif

View File

@ -72,14 +72,14 @@ private:
int _stage_offset; int _stage_offset;
// Avoid using this! It merely exists so the // Avoid using this! It merely exists so the
// destructor has access to the extension functions. // destructor has access to the extension functions.
WCPT(GSG) _last_gsg; WPT(GSG) _last_gsg;
void glsl_report_shader_errors(GSG *gsg, unsigned int shader); void glsl_report_shader_errors(GSG *gsg, unsigned int shader);
void glsl_report_program_errors(GSG *gsg, unsigned int program); void glsl_report_program_errors(GSG *gsg, unsigned int program);
unsigned int glsl_compile_entry_point(GSG *gsg, Shader::ShaderType type); unsigned int glsl_compile_entry_point(GSG *gsg, Shader::ShaderType type);
bool glsl_compile_shader(GSG *gsg); bool glsl_compile_shader(GSG *gsg);
void release_resources(const GSG *gsg); void release_resources(GSG *gsg);
public: public:
static TypeHandle get_class_type() { static TypeHandle get_class_type() {