00001 /* 00002 * OpenGL shader constant buffer 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_SHADER_CONSTANT_BUFFER_H__ 00009 #define __SP_OPENGL_SHADER_CONSTANT_BUFFER_H__ 00010 00011 00012 #include "Base/spStandard.hpp" 00013 00014 #if defined(SP_COMPILE_WITH_OPENGL) 00015 00016 00017 #include "RenderSystem/spConstantBuffer.hpp" 00018 #include "RenderSystem/OpenGL/spOpenGLCoreHeader.hpp" 00019 00020 00021 namespace sp 00022 { 00023 namespace video 00024 { 00025 00026 00027 class OpenGLShader; 00028 class OpenGLShaderClass; 00029 00030 class SP_EXPORT OpenGLConstantBuffer : public ConstantBuffer 00031 { 00032 00033 public: 00034 00035 OpenGLConstantBuffer(OpenGLShaderClass* Owner, const io::stringc &Name, u32 Index); 00036 ~OpenGLConstantBuffer(); 00037 00038 /* === Functions === */ 00039 00040 bool updateBuffer(const void* Buffer, u32 Size = 0); 00041 00042 bool valid() const; 00043 00044 private: 00045 00046 friend class OpenGLShader; 00047 00048 /* === Members === */ 00049 00050 GLuint HWBuffer_; 00051 GLuint ProgramObject_; 00052 00053 }; 00054 00055 00056 } // /namespace scene 00057 00058 } // /namespace sp 00059 00060 00061 #endif 00062 00063 #endif 00064 00065 00066 00067 // ================================================================================