00001 00007 #ifndef _OPENGLRENDERER_H_ 00008 #define _OPENGLRENDERER_H_ 00009 00010 #include "../Renderer.h" 00011 #include "../../Common/OpenGL/OpenGLext.h" 00012 00013 class OpenGLRenderer : public Renderer { 00014 public: 00015 OpenGLRenderer(); 00016 00017 void init(); 00018 void setDefaults(); 00019 void changeDepthFunc(const int depthFunc); 00020 void changeBlending(const int src, const int dest, const int blendMode); 00021 void changeMask(const int mask); 00022 00023 void changeTextureUnit(const int tex); 00024 void changeTexture(const TextureID textureID); 00025 void assignNamedTextures(); 00026 00027 void changeShader(const ShaderID shader); 00028 void changeShaderConstant1f(const char *name, const float constant); 00029 void changeShaderConstant2f(const char *name, const Vec2 &constant); 00030 void changeShaderConstant3f(const char *name, const Vec3 &constant); 00031 void changeShaderConstant4f(const char *name, const Vec4 &constant); 00032 00033 void changeFragmentShader(const ShaderID shader); 00034 void changeVertexShader(const ShaderID shader); 00035 00036 protected: 00037 bool createTexture(Texture &texture); 00038 void removeTexture(Texture &texture); 00039 00040 bool createShader(Shader &shader, const char *vertexShaderText, const char *fragmentShaderText); 00041 void removeShader(Shader &shader); 00042 00043 void createFragmentShader(FragmentShader &fragmentShader); 00044 void removeFragmentShader(FragmentShader &fragmentShader); 00045 void uploadFragmentShader(FragmentShader &fragmentShader); 00046 00047 void createVertexShader(VertexShader &vertexShader); 00048 void removeVertexShader(VertexShader &vertexShader); 00049 void uploadVertexShader(VertexShader &vertexShader); 00050 00051 static GLenum targets[]; 00052 }; 00053 00054 #endif