00001 /* 00002 * OpenGL programmable function renderer header 00003 * 00004 * This file is part of the "SoftPixel Engine" (Copyright (c) 2008 by Lukas Hermanns) 00005 * See "SoftPixelEngine.hpp" for license information. 00006 */ 00007 00008 #ifndef __SP_OPENGL_PROGRAMMABLEFUNCTIONPIPELINE_H__ 00009 #define __SP_OPENGL_PROGRAMMABLEFUNCTIONPIPELINE_H__ 00010 00011 00012 #include "Base/spStandard.hpp" 00013 00014 #if defined(SP_COMPILE_WITH_OPENGL) || defined(SP_COMPILE_WITH_OPENGLES2) 00015 00016 #include "RenderSystem/OpenGL/spOpenGLPipelineBase.hpp" 00017 #include "RenderSystem/OpenGL/spOpenGLShader.hpp" 00018 00019 00020 namespace sp 00021 { 00022 namespace video 00023 { 00024 00025 00027 class SP_EXPORT GLProgrammableFunctionPipeline : virtual public GLBasePipeline 00028 { 00029 00030 public: 00031 00032 virtual ~GLProgrammableFunctionPipeline(); 00033 00034 /* === Render system information === */ 00035 00036 io::stringc getShaderVersion() const; 00037 00038 /* === Shader programs === */ 00039 00040 ShaderClass* createShaderClass(VertexFormat* VertexInputLayout = 0); 00041 00042 Shader* createShader( 00043 ShaderClass* ShaderClassObj, const EShaderTypes Type, const EShaderVersions Version, 00044 const std::list<io::stringc> &ShaderBuffer, const io::stringc &EntryPoint = "" 00045 ); 00046 00047 void unbindShaders(); 00048 00049 /* === Render targets === */ 00050 00051 bool setRenderTarget(Texture* Target); 00052 00053 /* === Special renderer functions === */ 00054 00061 static void setBalanceRT(bool Enable); 00062 static bool getBalanceRT(); 00063 00064 protected: 00065 00066 /* Functions */ 00067 00068 GLProgrammableFunctionPipeline(); 00069 00070 /* Members */ 00071 00072 static bool EnableBalanceRT_; 00073 00074 }; 00075 00076 00077 } // /namespace video 00078 00079 } // /namespace sp 00080 00081 00082 #endif 00083 00084 #endif 00085 00086 00087 00088 // ================================================================================