/* ZOpenGLShaderProgram.h Author: Chris Ertel , James Russell Created: 04/03/2011 Purpose: TODO License: TODO */ #pragma once #ifndef _ZOPENGLSHADERPROGRAM_HPP #define _ZOPENGLSHADERPROGRAM_HPP #include #include #include //Forward Declarations class ZOpenGLRenderer; //Struct we use to track opengl handles for uniform blocks and block members struct ZOpenGLUniformBlockData { GLuint BlockIndex; //OpenGL Index for UniformBlocks[i] ZArray MemberIndices; //OpenGL Index for UniformBlocks[i].Members[i] }; //OpenGL Implementation of ZShaderProgram class ZOpenGLShaderProgram : public ZShaderProgramBase { protected: //Parent renderer ZOpenGLRenderer* Renderer; //Static method used to link a shader program static void Link_(ZThread* _thread, void* _shaderProgram); public: //Handle to the program in OpenGL GLuint GLHandle; //Our set of uniform indices, sampler indices, and stream indices ZArray OpenGLUniformBlockData; ZArray OpenGLSamplerData; ZArray OpenGLStreamData; /* Constructor. @param _renderer - the current renderer */ ZOpenGLShaderProgram(ZOpenGLRenderer* _renderer); //Virtual destructor virtual ~ZOpenGLShaderProgram(); //Subclass Implementation virtual bool Link(); }; #endif