Browse Source

Build for OpenGL ES (2)

rdb 16 years ago
parent
commit
d8fe8dda6a

+ 19 - 19
panda/src/gles2gsg/gles2gsg.h

@@ -45,25 +45,25 @@
 #include <GLES2/gl2ext.h>
 #include <GLES2/gl2ext.h>
 
 
 // This helps to keep the source clean of hundreds of #ifdefs.
 // This helps to keep the source clean of hundreds of #ifdefs.
-#ifdef OPENGLES_2
-  #define GL_RENDERBUFFER_EXT GL_RENDERBUFFER
-  #define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER
-  #define GL_DRAW_FRAMEBUFFER_EXT GL_FRAMEBUFFER
-  #define GL_READ_FRAMEBUFFER_EXT GL_FRAMEBUFFER
-  #define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE
-  #define GL_FRAMEBUFFER_UNSUPPORTED_EXT GL_FRAMEBUFFER_UNSUPPORTED
-  #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
-  #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
-  #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
-  #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT GL_FRAMEBUFFER_INCOMPLETE_FORMATS
-  #define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT
-  #define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0
-  #define GL_STENCIL_ATTACHMENT_EXT GL_STENCIL_ATTACHMENT
-  #define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES
-  #define GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT32_OES
-  #define GL_TEXTURE_3D GL_TEXTURE_3D_OES
-  #define GL_MAX_3D_TEXTURE_SIZE GL_MAX_3D_TEXTURE_SIZE_OES
-#endif
+typedef char GLchar;
+#define GL_RENDERBUFFER_EXT GL_RENDERBUFFER
+#define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER
+#define GL_DRAW_FRAMEBUFFER_EXT GL_FRAMEBUFFER
+#define GL_READ_FRAMEBUFFER_EXT GL_FRAMEBUFFER
+#define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT GL_FRAMEBUFFER_UNSUPPORTED
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT GL_FRAMEBUFFER_INCOMPLETE_FORMATS
+#define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT
+#define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0
+#define GL_STENCIL_ATTACHMENT_EXT GL_STENCIL_ATTACHMENT
+#define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES
+#define GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT32_OES
+#define GL_TEXTURE_3D GL_TEXTURE_3D_OES
+#define GL_MAX_3D_TEXTURE_SIZE GL_MAX_3D_TEXTURE_SIZE_OES
+#define GL_SAMPLER_3D GL_SAMPLER_3D_OES
 
 
 #undef SUPPORT_IMMEDIATE_MODE
 #undef SUPPORT_IMMEDIATE_MODE
 #define APIENTRY
 #define APIENTRY

+ 38 - 40
panda/src/glesgsg/glesgsg.h

@@ -50,46 +50,44 @@
 #endif
 #endif
 
 
 // This helps to keep the source clean of hundreds of #ifdefs.
 // This helps to keep the source clean of hundreds of #ifdefs.
-#ifdef OPENGLES_1
-  #define GL_NONE GL_NONE_OES
-  #define GL_RENDERBUFFER_EXT GL_RENDERBUFFER_OES
-  #define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
-  #define GL_DRAW_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
-  #define GL_READ_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
-  #define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0_OES
-  #define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT_OES
-  #define GL_STENCIL_ATTACHMENT_EXT GL_STENCIL_ATTACHMENT_OES
-  #define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE_OES
-  #define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES
-  #define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES
-  #define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES
-  #define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES
-  #define GL_FRAMEBUFFER_UNSUPPORTED_EXT GL_FRAMEBUFFER_UNSUPPORTED_OES
-  #define GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT24_OES
-  #define GL_DEPTH_STENCIL GL_DEPTH_STENCIL_OES
-  #define GL_DEPTH_STENCIL_EXT GL_DEPTH_STENCIL_OES
-  #define GL_UNSIGNED_INT_24_8_EXT GL_UNSIGNED_INT_24_8_OES
-  #define GL_DEPTH24_STENCIL8_EXT GL_DEPTH24_STENCIL8_OES
-  #define GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT16_OES
-  #define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES
-  #define GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT32_OES
-  #define GL_TEXTURE_CUBE_MAP GL_TEXTURE_CUBE_MAP_OES
-  #define GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES
-  #define GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES
-  #define GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES
-  #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES
-  #define GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES
-  #define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES
-  #define GL_MAX_CUBE_MAP_TEXTURE_SIZE GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES
-  #define GL_MIRRORED_REPEAT GL_MIRRORED_REPEAT_OES
-  #define GL_RGB5_A1 GL_RGB5_A1_OES
-  #define GL_RGBA4 GL_RGBA4_OES
-  #define GL_RGB8 GL_RGB8_OES
-  #define GL_RGBA8 GL_RGBA8_OES
-  #define GL_FUNC_ADD GL_FUNC_ADD_OES
-  #define GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_OES
-  #define GL_FUNC_REVERSE_SUBTRACT GL_FUNC_REVERSE_SUBTRACT_OES
-#endif
+#define GL_NONE GL_NONE_OES
+#define GL_RENDERBUFFER_EXT GL_RENDERBUFFER_OES
+#define GL_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
+#define GL_DRAW_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
+#define GL_READ_FRAMEBUFFER_EXT GL_FRAMEBUFFER_OES
+#define GL_COLOR_ATTACHMENT0_EXT GL_COLOR_ATTACHMENT0_OES
+#define GL_DEPTH_ATTACHMENT_EXT GL_DEPTH_ATTACHMENT_OES
+#define GL_STENCIL_ATTACHMENT_EXT GL_STENCIL_ATTACHMENT_OES
+#define GL_FRAMEBUFFER_COMPLETE_EXT GL_FRAMEBUFFER_COMPLETE_OES
+#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES
+#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES
+#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES
+#define GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT GL_FRAMEBUFFER_INCOMPLETE_FORMATS_OES
+#define GL_FRAMEBUFFER_UNSUPPORTED_EXT GL_FRAMEBUFFER_UNSUPPORTED_OES
+#define GL_DEPTH_COMPONENT GL_DEPTH_COMPONENT24_OES
+#define GL_DEPTH_STENCIL GL_DEPTH_STENCIL_OES
+#define GL_DEPTH_STENCIL_EXT GL_DEPTH_STENCIL_OES
+#define GL_UNSIGNED_INT_24_8_EXT GL_UNSIGNED_INT_24_8_OES
+#define GL_DEPTH24_STENCIL8_EXT GL_DEPTH24_STENCIL8_OES
+#define GL_DEPTH_COMPONENT16 GL_DEPTH_COMPONENT16_OES
+#define GL_DEPTH_COMPONENT24 GL_DEPTH_COMPONENT24_OES
+#define GL_DEPTH_COMPONENT32 GL_DEPTH_COMPONENT32_OES
+#define GL_TEXTURE_CUBE_MAP GL_TEXTURE_CUBE_MAP_OES
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_X GL_TEXTURE_CUBE_MAP_POSITIVE_X_OES
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_X GL_TEXTURE_CUBE_MAP_NEGATIVE_X_OES
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Y GL_TEXTURE_CUBE_MAP_POSITIVE_Y_OES
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Y GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_OES
+#define GL_TEXTURE_CUBE_MAP_POSITIVE_Z GL_TEXTURE_CUBE_MAP_POSITIVE_Z_OES
+#define GL_TEXTURE_CUBE_MAP_NEGATIVE_Z GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_OES
+#define GL_MAX_CUBE_MAP_TEXTURE_SIZE GL_MAX_CUBE_MAP_TEXTURE_SIZE_OES
+#define GL_MIRRORED_REPEAT GL_MIRRORED_REPEAT_OES
+#define GL_RGB5_A1 GL_RGB5_A1_OES
+#define GL_RGBA4 GL_RGBA4_OES
+#define GL_RGB8 GL_RGB8_OES
+#define GL_RGBA8 GL_RGBA8_OES
+#define GL_FUNC_ADD GL_FUNC_ADD_OES
+#define GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_OES
+#define GL_FUNC_REVERSE_SUBTRACT GL_FUNC_REVERSE_SUBTRACT_OES
 
 
 #undef SUPPORT_IMMEDIATE_MODE
 #undef SUPPORT_IMMEDIATE_MODE
 #define APIENTRY
 #define APIENTRY

+ 40 - 2
panda/src/glstuff/glGraphicsStateGuardian_src.cxx

@@ -849,10 +849,15 @@ reset() {
 #ifdef OPENGLES_2
 #ifdef OPENGLES_2
   _supports_glsl = true;
   _supports_glsl = true;
 #else
 #else
-  _supports_glsl = is_at_least_gl_version(2, 0);
+  #ifdef OPENGLES_1
+    _supports_glsl = false;
+  #else
+    _supports_glsl = is_at_least_gl_version(2, 0);
+  #endif
 #endif
 #endif
   _shader_caps._supports_glsl = _supports_glsl;
   _shader_caps._supports_glsl = _supports_glsl;
 
 
+#ifndef OPENGLES_1
   if (_supports_glsl) {
   if (_supports_glsl) {
     _glAttachShader = (PFNGLATTACHSHADERPROC)
     _glAttachShader = (PFNGLATTACHSHADERPROC)
        get_extension_func(GLPREFIX_QUOTED, "AttachShader");
        get_extension_func(GLPREFIX_QUOTED, "AttachShader");
@@ -903,6 +908,7 @@ reset() {
     _glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)
     _glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)
        get_extension_func(GLPREFIX_QUOTED, "ValidateProgram");
        get_extension_func(GLPREFIX_QUOTED, "ValidateProgram");
   }
   }
+#endif
 
 
 #ifdef OPENGLES_2
 #ifdef OPENGLES_2
   // In OpenGL ES 2.x, FBO's are supported in the core.
   // In OpenGL ES 2.x, FBO's are supported in the core.
@@ -1394,12 +1400,14 @@ reset() {
 #endif  // OPENGLES
 #endif  // OPENGLES
   _dithering_enabled = false;
   _dithering_enabled = false;
 
 
+#ifndef OPENGLES_1
   _current_shader = (Shader *)NULL;
   _current_shader = (Shader *)NULL;
   _current_shader_context = (CLP(ShaderContext) *)NULL;
   _current_shader_context = (CLP(ShaderContext) *)NULL;
   _vertex_array_shader = (Shader *)NULL;
   _vertex_array_shader = (Shader *)NULL;
   _vertex_array_shader_context = (CLP(ShaderContext) *)NULL;
   _vertex_array_shader_context = (CLP(ShaderContext) *)NULL;
   _texture_binding_shader = (Shader *)NULL;
   _texture_binding_shader = (Shader *)NULL;
   _texture_binding_shader_context = (CLP(ShaderContext) *)NULL;
   _texture_binding_shader_context = (CLP(ShaderContext) *)NULL;
+#endif
 
 
 #ifdef OPENGLES_2
 #ifdef OPENGLES_2
   _max_lights = 0;
   _max_lights = 0;
@@ -1905,6 +1913,7 @@ void CLP(GraphicsStateGuardian)::
 end_scene() {
 end_scene() {
   GraphicsStateGuardian::end_scene();
   GraphicsStateGuardian::end_scene();
 
 
+#ifndef OPENGLES_1
   if (_vertex_array_shader_context != 0) {
   if (_vertex_array_shader_context != 0) {
     _vertex_array_shader_context->disable_shader_vertex_arrays(this);
     _vertex_array_shader_context->disable_shader_vertex_arrays(this);
     _vertex_array_shader = (Shader *)NULL;
     _vertex_array_shader = (Shader *)NULL;
@@ -1920,6 +1929,7 @@ end_scene() {
     _current_shader = (Shader *)NULL;
     _current_shader = (Shader *)NULL;
     _current_shader_context = (CLP(ShaderContext) *)NULL;
     _current_shader_context = (CLP(ShaderContext) *)NULL;
   }
   }
+#endif
 
 
   _dlights.clear();
   _dlights.clear();
   report_my_gl_errors();
   report_my_gl_errors();
@@ -2238,6 +2248,11 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
   }
   }
 #endif
 #endif
   
   
+#ifdef OPENGLES_1
+  if (!update_standard_vertex_arrays(force)) {
+    return false;
+  }
+#else
   if (_current_shader_context == 0 || !_current_shader_context->uses_custom_vertex_arrays()) {
   if (_current_shader_context == 0 || !_current_shader_context->uses_custom_vertex_arrays()) {
     // No shader, or a non-Cg shader.
     // No shader, or a non-Cg shader.
     if (_vertex_array_shader_context != 0) {
     if (_vertex_array_shader_context != 0) {
@@ -2263,6 +2278,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
 
 
   _vertex_array_shader = _current_shader;
   _vertex_array_shader = _current_shader;
   _vertex_array_shader_context = _current_shader_context;
   _vertex_array_shader_context = _current_shader_context;
+#endif  // OPENGLES_1
 
 
   report_my_gl_errors();
   report_my_gl_errors();
   return true;
   return true;
@@ -3132,9 +3148,11 @@ release_geom(GeomContext *gc) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 ShaderContext *CLP(GraphicsStateGuardian)::
 ShaderContext *CLP(GraphicsStateGuardian)::
 prepare_shader(Shader *se) {
 prepare_shader(Shader *se) {
+#ifndef OPENGLES_1
   CLP(ShaderContext) *result = new CLP(ShaderContext)(se, this);
   CLP(ShaderContext) *result = new CLP(ShaderContext)(se, this);
   if (result->valid()) return result;
   if (result->valid()) return result;
   delete result;
   delete result;
+#endif
   return NULL;
   return NULL;
 }
 }
 
 
@@ -3145,8 +3163,10 @@ prepare_shader(Shader *se) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 release_shader(ShaderContext *sc) {
 release_shader(ShaderContext *sc) {
+#ifndef OPENGLES_1
   CLP(ShaderContext) *gsc = DCAST(CLP(ShaderContext), sc);
   CLP(ShaderContext) *gsc = DCAST(CLP(ShaderContext), sc);
   delete gsc;
   delete gsc;
+#endif
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -3988,9 +4008,11 @@ do_issue_transform() {
     do_auto_rescale_normal();
     do_auto_rescale_normal();
   }
   }
 
 
+#ifndef OPENGLES_1
   if (_current_shader_context) {
   if (_current_shader_context) {
     _current_shader_context->issue_parameters(this, Shader::SSD_transform);
     _current_shader_context->issue_parameters(this, Shader::SSD_transform);
   }
   }
+#endif
 
 
   report_my_gl_errors();
   report_my_gl_errors();
 }
 }
@@ -4025,6 +4047,7 @@ do_issue_shade_model() {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void CLP(GraphicsStateGuardian)::
 void CLP(GraphicsStateGuardian)::
 do_issue_shader() {
 do_issue_shader() {
+#ifndef OPENGLES_1
   CLP(ShaderContext) *context = 0;
   CLP(ShaderContext) *context = 0;
   Shader *shader = (Shader *)(_target_shader->get_shader());
   Shader *shader = (Shader *)(_target_shader->get_shader());
   if (shader) {
   if (shader) {
@@ -4054,6 +4077,7 @@ do_issue_shader() {
   }
   }
 
 
   report_my_gl_errors();
   report_my_gl_errors();
+#endif
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -6705,10 +6729,12 @@ set_state_and_transform(const RenderState *target,
     do_issue_color_scale();
     do_issue_color_scale();
     _state_mask.set_bit(color_slot);
     _state_mask.set_bit(color_slot);
     _state_mask.set_bit(color_scale_slot);
     _state_mask.set_bit(color_scale_slot);
+#ifndef OPENGLES_1
     if (_current_shader_context) {
     if (_current_shader_context) {
       _current_shader_context->issue_parameters(this, Shader::SSD_color);
       _current_shader_context->issue_parameters(this, Shader::SSD_color);
       _current_shader_context->issue_parameters(this, Shader::SSD_colorscale);
       _current_shader_context->issue_parameters(this, Shader::SSD_colorscale);
     }
     }
+#endif
   }
   }
 
 
   int cull_face_slot = CullFaceAttrib::get_class_slot();
   int cull_face_slot = CullFaceAttrib::get_class_slot();
@@ -6785,12 +6811,14 @@ set_state_and_transform(const RenderState *target,
     _state_mask.set_bit(color_blend_slot);
     _state_mask.set_bit(color_blend_slot);
   }
   }
 
 
+#ifndef OPENGLES_1
   if (_target_shader != _state_shader) {
   if (_target_shader != _state_shader) {
     //PStatTimer timer(_draw_set_state_shader_pcollector);
     //PStatTimer timer(_draw_set_state_shader_pcollector);
     do_issue_shader();
     do_issue_shader();
     _state_shader = _target_shader;
     _state_shader = _target_shader;
     _state_mask.clear_bit(TextureAttrib::get_class_slot());
     _state_mask.clear_bit(TextureAttrib::get_class_slot());
   }
   }
+#endif
 
 
   int texture_slot = TextureAttrib::get_class_slot();
   int texture_slot = TextureAttrib::get_class_slot();
   if (_target_rs->get_attrib(texture_slot) != _state_rs->get_attrib(texture_slot) ||
   if (_target_rs->get_attrib(texture_slot) != _state_rs->get_attrib(texture_slot) ||
@@ -6848,9 +6876,11 @@ set_state_and_transform(const RenderState *target,
     //PStatTimer timer(_draw_set_state_material_pcollector);
     //PStatTimer timer(_draw_set_state_material_pcollector);
     do_issue_material();
     do_issue_material();
     _state_mask.set_bit(material_slot);
     _state_mask.set_bit(material_slot);
+#ifndef OPENGLES_1
     if (_current_shader_context) {
     if (_current_shader_context) {
       _current_shader_context->issue_parameters(this, Shader::SSD_material);
       _current_shader_context->issue_parameters(this, Shader::SSD_material);
     }
     }
+#endif
   }
   }
 
 
   int light_slot = LightAttrib::get_class_slot();
   int light_slot = LightAttrib::get_class_slot();
@@ -6868,8 +6898,10 @@ set_state_and_transform(const RenderState *target,
     do_issue_stencil();
     do_issue_stencil();
     _state_mask.set_bit(stencil_slot);
     _state_mask.set_bit(stencil_slot);
   }
   }
-     
+
+#ifndef OPENGLES_1
   if (_current_shader_context == 0) {
   if (_current_shader_context == 0) {
+#endif
     int fog_slot = FogAttrib::get_class_slot();
     int fog_slot = FogAttrib::get_class_slot();
     if (_target_rs->get_attrib(fog_slot) != _state_rs->get_attrib(fog_slot) ||
     if (_target_rs->get_attrib(fog_slot) != _state_rs->get_attrib(fog_slot) ||
         !_state_mask.get_bit(fog_slot)) {
         !_state_mask.get_bit(fog_slot)) {
@@ -6877,7 +6909,9 @@ set_state_and_transform(const RenderState *target,
       do_issue_fog();
       do_issue_fog();
       _state_mask.set_bit(fog_slot);
       _state_mask.set_bit(fog_slot);
     }
     }
+#ifndef OPENGLES_1
   }
   }
+#endif
 
 
   int scissor_slot = ScissorAttrib::get_class_slot();
   int scissor_slot = ScissorAttrib::get_class_slot();
   if (_target_rs->get_attrib(scissor_slot) != _state_rs->get_attrib(scissor_slot) ||
   if (_target_rs->get_attrib(scissor_slot) != _state_rs->get_attrib(scissor_slot) ||
@@ -6967,6 +7001,9 @@ void CLP(GraphicsStateGuardian)::
 do_issue_texture() {
 do_issue_texture() {
   DO_PSTATS_STUFF(_texture_state_pcollector.add_level(1));
   DO_PSTATS_STUFF(_texture_state_pcollector.add_level(1));
 
 
+#ifdef OPENGLES_1
+  update_standard_texture_bindings();
+#else
   if (_current_shader_context == 0 || !_current_shader_context->uses_custom_texture_bindings()) {
   if (_current_shader_context == 0 || !_current_shader_context->uses_custom_texture_bindings()) {
     // No shader, or a non-Cg shader.
     // No shader, or a non-Cg shader.
     if (_texture_binding_shader_context != 0) {
     if (_texture_binding_shader_context != 0) {
@@ -6985,6 +7022,7 @@ do_issue_texture() {
 
 
   _texture_binding_shader = _current_shader;
   _texture_binding_shader = _current_shader;
   _texture_binding_shader_context = _current_shader_context;
   _texture_binding_shader_context = _current_shader_context;
+#endif
 }
 }
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////

+ 6 - 0
panda/src/glstuff/glGraphicsStateGuardian_src.h

@@ -113,6 +113,7 @@ typedef void (APIENTRYP PFNGLLOADPALETTEFROMMODELVIEWMATRIXOESPROC) (void);
 typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLMATRIXINDEXPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 typedef void (APIENTRYP PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
 
 
+#ifndef OPENGLES_1
 // GLSL shader functions
 // GLSL shader functions
 typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
 typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
 typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
 typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
@@ -138,6 +139,7 @@ typedef void (APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, con
 typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
 typedef void (APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value);
 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
 typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
+#endif
 #endif  // __EDG__
 #endif  // __EDG__
 
 
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
@@ -431,12 +433,14 @@ protected:
   bool _point_perspective;
   bool _point_perspective;
   bool _vertex_blending_enabled;
   bool _vertex_blending_enabled;
 
 
+#ifndef OPENGLES_1
   PT(Shader)  _current_shader;
   PT(Shader)  _current_shader;
   CLP(ShaderContext)  *_current_shader_context;
   CLP(ShaderContext)  *_current_shader_context;
   PT(Shader)  _vertex_array_shader;
   PT(Shader)  _vertex_array_shader;
   CLP(ShaderContext)  *_vertex_array_shader_context;
   CLP(ShaderContext)  *_vertex_array_shader_context;
   PT(Shader)  _texture_binding_shader;
   PT(Shader)  _texture_binding_shader;
   CLP(ShaderContext)  *_texture_binding_shader_context;
   CLP(ShaderContext)  *_texture_binding_shader_context;
+#endif
 
 
 #ifdef SUPPORT_IMMEDIATE_MODE
 #ifdef SUPPORT_IMMEDIATE_MODE
   CLP(ImmediateModeSender) _sender;
   CLP(ImmediateModeSender) _sender;
@@ -574,6 +578,7 @@ public:
 
 
   PFNGLACTIVESTENCILFACEEXTPROC _glActiveStencilFaceEXT;
   PFNGLACTIVESTENCILFACEEXTPROC _glActiveStencilFaceEXT;
 
 
+#ifndef OPENGLES_1
   // GLSL functions
   // GLSL functions
   PFNGLATTACHSHADERPROC _glAttachShader;
   PFNGLATTACHSHADERPROC _glAttachShader;
   PFNGLCOMPILESHADERPROC _glCompileShader;
   PFNGLCOMPILESHADERPROC _glCompileShader;
@@ -599,6 +604,7 @@ public:
   PFNGLUNIFORM4FVPROC _glUniform4fv;
   PFNGLUNIFORM4FVPROC _glUniform4fv;
   PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv;
   PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv;
   PFNGLVALIDATEPROGRAMPROC _glValidateProgram;
   PFNGLVALIDATEPROGRAMPROC _glValidateProgram;
+#endif
 
 
   GLenum _edge_clamp;
   GLenum _edge_clamp;
   GLenum _border_clamp;
   GLenum _border_clamp;

+ 4 - 0
panda/src/glstuff/glShaderContext_src.I

@@ -12,6 +12,8 @@
 //
 //
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
+#ifndef OPENGLES_1
+
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 //     Function: GLShaderContext::valid
 //     Function: GLShaderContext::valid
 //       Access: Public
 //       Access: Public
@@ -58,3 +60,5 @@ uses_custom_texture_bindings() {
   return true;
   return true;
 }
 }
 
 
+#endif  // OPENGLES_1
+

+ 7 - 0
panda/src/glstuff/glShaderContext_src.cxx

@@ -12,6 +12,8 @@
 //
 //
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
+#ifndef OPENGLES_1
+
 #ifdef HAVE_CG
 #ifdef HAVE_CG
 #include "Cg/cgGL.h"
 #include "Cg/cgGL.h"
 #endif
 #endif
@@ -132,6 +134,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
             continue;
             continue;
           }
           }
           switch (param_type) {
           switch (param_type) {
+#ifndef OPENGLES
             case GL_SAMPLER_1D_SHADOW:
             case GL_SAMPLER_1D_SHADOW:
             case GL_SAMPLER_1D: {
             case GL_SAMPLER_1D: {
               Shader::ShaderTexSpec bind;
               Shader::ShaderTexSpec bind;
@@ -142,6 +145,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
               s->_tex_spec.push_back(bind);
               s->_tex_spec.push_back(bind);
               continue; }
               continue; }
             case GL_SAMPLER_2D_SHADOW:
             case GL_SAMPLER_2D_SHADOW:
+#endif
             case GL_SAMPLER_2D: {
             case GL_SAMPLER_2D: {
               Shader::ShaderTexSpec bind;
               Shader::ShaderTexSpec bind;
               bind._id = arg_id;
               bind._id = arg_id;
@@ -168,12 +172,14 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
               continue; }
               continue; }
             case GL_FLOAT_MAT2:
             case GL_FLOAT_MAT2:
             case GL_FLOAT_MAT3:
             case GL_FLOAT_MAT3:
+#ifndef OPENGLES
             case GL_FLOAT_MAT2x3:
             case GL_FLOAT_MAT2x3:
             case GL_FLOAT_MAT2x4:
             case GL_FLOAT_MAT2x4:
             case GL_FLOAT_MAT3x2:
             case GL_FLOAT_MAT3x2:
             case GL_FLOAT_MAT3x4:
             case GL_FLOAT_MAT3x4:
             case GL_FLOAT_MAT4x2:
             case GL_FLOAT_MAT4x2:
             case GL_FLOAT_MAT4x3:
             case GL_FLOAT_MAT4x3:
+#endif
               GLCAT.warning() << "GLSL shader requested an unrecognized matrix type\n";
               GLCAT.warning() << "GLSL shader requested an unrecognized matrix type\n";
               continue;
               continue;
             case GL_FLOAT_MAT4: {
             case GL_FLOAT_MAT4: {
@@ -846,4 +852,5 @@ glsl_compile_shader(GSG *gsg) {
   return true;
   return true;
 }
 }
 
 
+#endif  // OPENGLES_1
 
 

+ 4 - 0
panda/src/glstuff/glShaderContext_src.h

@@ -12,6 +12,8 @@
 //
 //
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 
 
+#ifndef OPENGLES_1
+
 #include "pandabase.h"
 #include "pandabase.h"
 #include "string_utils.h"
 #include "string_utils.h"
 #include "internalName.h"
 #include "internalName.h"
@@ -99,3 +101,5 @@ private:
 
 
 #include "glShaderContext_src.I"
 #include "glShaderContext_src.I"
 
 
+#endif  // OPENGLES_1
+

+ 2 - 0
panda/src/glstuff/glmisc_src.cxx

@@ -163,7 +163,9 @@ void CLP(init_classes)() {
   CLP(GeomMunger)::init_type();
   CLP(GeomMunger)::init_type();
   CLP(GraphicsStateGuardian)::init_type();
   CLP(GraphicsStateGuardian)::init_type();
   CLP(IndexBufferContext)::init_type();
   CLP(IndexBufferContext)::init_type();
+#ifndef OPENGLES_1
   CLP(ShaderContext)::init_type();
   CLP(ShaderContext)::init_type();
+#endif
   CLP(TextureContext)::init_type();
   CLP(TextureContext)::init_type();
   CLP(VertexBufferContext)::init_type();
   CLP(VertexBufferContext)::init_type();
   CLP(GraphicsBuffer)::init_type();
   CLP(GraphicsBuffer)::init_type();