mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
Build for OpenGL ES (2)
This commit is contained in:
parent
b7aa2ead11
commit
d8fe8dda6a
@ -45,25 +45,25 @@
|
||||
#include <GLES2/gl2ext.h>
|
||||
|
||||
// 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
|
||||
#define APIENTRY
|
||||
|
@ -50,46 +50,44 @@
|
||||
#endif
|
||||
|
||||
// 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
|
||||
#define APIENTRY
|
||||
|
@ -849,10 +849,15 @@ reset() {
|
||||
#ifdef OPENGLES_2
|
||||
_supports_glsl = true;
|
||||
#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
|
||||
_shader_caps._supports_glsl = _supports_glsl;
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
if (_supports_glsl) {
|
||||
_glAttachShader = (PFNGLATTACHSHADERPROC)
|
||||
get_extension_func(GLPREFIX_QUOTED, "AttachShader");
|
||||
@ -903,6 +908,7 @@ reset() {
|
||||
_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)
|
||||
get_extension_func(GLPREFIX_QUOTED, "ValidateProgram");
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPENGLES_2
|
||||
// In OpenGL ES 2.x, FBO's are supported in the core.
|
||||
@ -1394,12 +1400,14 @@ reset() {
|
||||
#endif // OPENGLES
|
||||
_dithering_enabled = false;
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
_current_shader = (Shader *)NULL;
|
||||
_current_shader_context = (CLP(ShaderContext) *)NULL;
|
||||
_vertex_array_shader = (Shader *)NULL;
|
||||
_vertex_array_shader_context = (CLP(ShaderContext) *)NULL;
|
||||
_texture_binding_shader = (Shader *)NULL;
|
||||
_texture_binding_shader_context = (CLP(ShaderContext) *)NULL;
|
||||
#endif
|
||||
|
||||
#ifdef OPENGLES_2
|
||||
_max_lights = 0;
|
||||
@ -1905,6 +1913,7 @@ void CLP(GraphicsStateGuardian)::
|
||||
end_scene() {
|
||||
GraphicsStateGuardian::end_scene();
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
if (_vertex_array_shader_context != 0) {
|
||||
_vertex_array_shader_context->disable_shader_vertex_arrays(this);
|
||||
_vertex_array_shader = (Shader *)NULL;
|
||||
@ -1920,6 +1929,7 @@ end_scene() {
|
||||
_current_shader = (Shader *)NULL;
|
||||
_current_shader_context = (CLP(ShaderContext) *)NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
_dlights.clear();
|
||||
report_my_gl_errors();
|
||||
@ -2238,6 +2248,11 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader,
|
||||
}
|
||||
#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()) {
|
||||
// No shader, or a non-Cg shader.
|
||||
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_context = _current_shader_context;
|
||||
#endif // OPENGLES_1
|
||||
|
||||
report_my_gl_errors();
|
||||
return true;
|
||||
@ -3132,9 +3148,11 @@ release_geom(GeomContext *gc) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
ShaderContext *CLP(GraphicsStateGuardian)::
|
||||
prepare_shader(Shader *se) {
|
||||
#ifndef OPENGLES_1
|
||||
CLP(ShaderContext) *result = new CLP(ShaderContext)(se, this);
|
||||
if (result->valid()) return result;
|
||||
delete result;
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -3145,8 +3163,10 @@ prepare_shader(Shader *se) {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CLP(GraphicsStateGuardian)::
|
||||
release_shader(ShaderContext *sc) {
|
||||
#ifndef OPENGLES_1
|
||||
CLP(ShaderContext) *gsc = DCAST(CLP(ShaderContext), sc);
|
||||
delete gsc;
|
||||
#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -3988,9 +4008,11 @@ do_issue_transform() {
|
||||
do_auto_rescale_normal();
|
||||
}
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
if (_current_shader_context) {
|
||||
_current_shader_context->issue_parameters(this, Shader::SSD_transform);
|
||||
}
|
||||
#endif
|
||||
|
||||
report_my_gl_errors();
|
||||
}
|
||||
@ -4025,6 +4047,7 @@ do_issue_shade_model() {
|
||||
////////////////////////////////////////////////////////////////////
|
||||
void CLP(GraphicsStateGuardian)::
|
||||
do_issue_shader() {
|
||||
#ifndef OPENGLES_1
|
||||
CLP(ShaderContext) *context = 0;
|
||||
Shader *shader = (Shader *)(_target_shader->get_shader());
|
||||
if (shader) {
|
||||
@ -4054,6 +4077,7 @@ do_issue_shader() {
|
||||
}
|
||||
|
||||
report_my_gl_errors();
|
||||
#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -6705,10 +6729,12 @@ set_state_and_transform(const RenderState *target,
|
||||
do_issue_color_scale();
|
||||
_state_mask.set_bit(color_slot);
|
||||
_state_mask.set_bit(color_scale_slot);
|
||||
#ifndef OPENGLES_1
|
||||
if (_current_shader_context) {
|
||||
_current_shader_context->issue_parameters(this, Shader::SSD_color);
|
||||
_current_shader_context->issue_parameters(this, Shader::SSD_colorscale);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
if (_target_shader != _state_shader) {
|
||||
//PStatTimer timer(_draw_set_state_shader_pcollector);
|
||||
do_issue_shader();
|
||||
_state_shader = _target_shader;
|
||||
_state_mask.clear_bit(TextureAttrib::get_class_slot());
|
||||
}
|
||||
#endif
|
||||
|
||||
int texture_slot = TextureAttrib::get_class_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);
|
||||
do_issue_material();
|
||||
_state_mask.set_bit(material_slot);
|
||||
#ifndef OPENGLES_1
|
||||
if (_current_shader_context) {
|
||||
_current_shader_context->issue_parameters(this, Shader::SSD_material);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
int light_slot = LightAttrib::get_class_slot();
|
||||
@ -6868,8 +6898,10 @@ set_state_and_transform(const RenderState *target,
|
||||
do_issue_stencil();
|
||||
_state_mask.set_bit(stencil_slot);
|
||||
}
|
||||
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
if (_current_shader_context == 0) {
|
||||
#endif
|
||||
int fog_slot = FogAttrib::get_class_slot();
|
||||
if (_target_rs->get_attrib(fog_slot) != _state_rs->get_attrib(fog_slot) ||
|
||||
!_state_mask.get_bit(fog_slot)) {
|
||||
@ -6877,7 +6909,9 @@ set_state_and_transform(const RenderState *target,
|
||||
do_issue_fog();
|
||||
_state_mask.set_bit(fog_slot);
|
||||
}
|
||||
#ifndef OPENGLES_1
|
||||
}
|
||||
#endif
|
||||
|
||||
int scissor_slot = ScissorAttrib::get_class_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_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()) {
|
||||
// No shader, or a non-Cg shader.
|
||||
if (_texture_binding_shader_context != 0) {
|
||||
@ -6985,6 +7022,7 @@ do_issue_texture() {
|
||||
|
||||
_texture_binding_shader = _current_shader;
|
||||
_texture_binding_shader_context = _current_shader_context;
|
||||
#endif
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
@ -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 PFNGLWEIGHTPOINTEROESPROC) (GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
// GLSL shader functions
|
||||
typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, 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 PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
|
||||
typedef void (APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program);
|
||||
#endif
|
||||
#endif // __EDG__
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
@ -431,12 +433,14 @@ protected:
|
||||
bool _point_perspective;
|
||||
bool _vertex_blending_enabled;
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
PT(Shader) _current_shader;
|
||||
CLP(ShaderContext) *_current_shader_context;
|
||||
PT(Shader) _vertex_array_shader;
|
||||
CLP(ShaderContext) *_vertex_array_shader_context;
|
||||
PT(Shader) _texture_binding_shader;
|
||||
CLP(ShaderContext) *_texture_binding_shader_context;
|
||||
#endif
|
||||
|
||||
#ifdef SUPPORT_IMMEDIATE_MODE
|
||||
CLP(ImmediateModeSender) _sender;
|
||||
@ -574,6 +578,7 @@ public:
|
||||
|
||||
PFNGLACTIVESTENCILFACEEXTPROC _glActiveStencilFaceEXT;
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
// GLSL functions
|
||||
PFNGLATTACHSHADERPROC _glAttachShader;
|
||||
PFNGLCOMPILESHADERPROC _glCompileShader;
|
||||
@ -599,6 +604,7 @@ public:
|
||||
PFNGLUNIFORM4FVPROC _glUniform4fv;
|
||||
PFNGLUNIFORMMATRIX4FVPROC _glUniformMatrix4fv;
|
||||
PFNGLVALIDATEPROGRAMPROC _glValidateProgram;
|
||||
#endif
|
||||
|
||||
GLenum _edge_clamp;
|
||||
GLenum _border_clamp;
|
||||
|
@ -12,6 +12,8 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// Function: GLShaderContext::valid
|
||||
// Access: Public
|
||||
@ -58,3 +60,5 @@ uses_custom_texture_bindings() {
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // OPENGLES_1
|
||||
|
||||
|
@ -12,6 +12,8 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
|
||||
#ifdef HAVE_CG
|
||||
#include "Cg/cgGL.h"
|
||||
#endif
|
||||
@ -132,6 +134,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
|
||||
continue;
|
||||
}
|
||||
switch (param_type) {
|
||||
#ifndef OPENGLES
|
||||
case GL_SAMPLER_1D_SHADOW:
|
||||
case GL_SAMPLER_1D: {
|
||||
Shader::ShaderTexSpec bind;
|
||||
@ -142,6 +145,7 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
|
||||
s->_tex_spec.push_back(bind);
|
||||
continue; }
|
||||
case GL_SAMPLER_2D_SHADOW:
|
||||
#endif
|
||||
case GL_SAMPLER_2D: {
|
||||
Shader::ShaderTexSpec bind;
|
||||
bind._id = arg_id;
|
||||
@ -168,12 +172,14 @@ CLP(ShaderContext)(Shader *s, GSG *gsg) : ShaderContext(s) {
|
||||
continue; }
|
||||
case GL_FLOAT_MAT2:
|
||||
case GL_FLOAT_MAT3:
|
||||
#ifndef OPENGLES
|
||||
case GL_FLOAT_MAT2x3:
|
||||
case GL_FLOAT_MAT2x4:
|
||||
case GL_FLOAT_MAT3x2:
|
||||
case GL_FLOAT_MAT3x4:
|
||||
case GL_FLOAT_MAT4x2:
|
||||
case GL_FLOAT_MAT4x3:
|
||||
#endif
|
||||
GLCAT.warning() << "GLSL shader requested an unrecognized matrix type\n";
|
||||
continue;
|
||||
case GL_FLOAT_MAT4: {
|
||||
@ -846,4 +852,5 @@ glsl_compile_shader(GSG *gsg) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif // OPENGLES_1
|
||||
|
||||
|
@ -12,6 +12,8 @@
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef OPENGLES_1
|
||||
|
||||
#include "pandabase.h"
|
||||
#include "string_utils.h"
|
||||
#include "internalName.h"
|
||||
@ -99,3 +101,5 @@ private:
|
||||
|
||||
#include "glShaderContext_src.I"
|
||||
|
||||
#endif // OPENGLES_1
|
||||
|
||||
|
@ -163,7 +163,9 @@ void CLP(init_classes)() {
|
||||
CLP(GeomMunger)::init_type();
|
||||
CLP(GraphicsStateGuardian)::init_type();
|
||||
CLP(IndexBufferContext)::init_type();
|
||||
#ifndef OPENGLES_1
|
||||
CLP(ShaderContext)::init_type();
|
||||
#endif
|
||||
CLP(TextureContext)::init_type();
|
||||
CLP(VertexBufferContext)::init_type();
|
||||
CLP(GraphicsBuffer)::init_type();
|
||||
|
Loading…
x
Reference in New Issue
Block a user