Changeset 9818 in orxonox.OLD for branches/new_class_id/src/lib/graphics/shader.h
- Timestamp:
- Sep 25, 2006, 12:10:07 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/new_class_id/src/lib/graphics/shader.h
r9806 r9818 8 8 9 9 #include "base_object.h" 10 #include "glincl.h" 11 #include <vector> 12 10 #include "shader_data.h" 13 11 14 12 // FORWARD DECLARATION … … 24 22 { 25 23 public: 26 Uniform(const Shader* shader, const std::string& location) { this->uniform = glGetUniformLocationARB(shader->getProgram(), location.c_str()) ; }27 24 Uniform(const Shader& shader, const std::string& location) { this->uniform = glGetUniformLocation(shader.getProgram(), location.c_str()) ; }; 28 25 Uniform(GLhandleARB shaderProgram, const std::string& location) { this->uniform = glGetUniformLocation(shaderProgram, location.c_str()) ; }; … … 45 42 }; 46 43 47 //! The Type of Shader.48 typedef enum49 {50 None = 0, //!< No Type at all51 Fragment = 1, //!< Fragment Shader.52 Vertex = 2, //!< Vertex Shader.53 Program = 4, //!< Compiled Shader Programm.54 } Type;55 44 56 45 public: 57 Shader(const std::string& vertexShaderFile = "", const std::string& fragmentShaderFile = ""); 58 virtual ~Shader(); 46 Shader(); 47 Shader(const std::string& vertexShaderFile, const std::string& fragmentShaderFile = ""); 48 49 Shader& operator=(const Shader& shader) { this->data = shader.data; return *this; }; 50 const ShaderData::Pointer& dataPointer() const { return data; }; 51 void acquireData(const ShaderData::Pointer& pointer) { this->data = pointer; }; 52 53 bool load(const std::string& vertexShaderFile, const std::string& fragmentShaderFile = "") 54 { return this->data->load(vertexShaderFile, fragmentShaderFile); } 59 55 60 56 61 Shader::Uniform getUniform(const std::string& location) { return Shader::Uniform( this, location); }57 Shader::Uniform getUniform(const std::string& location) { return Shader::Uniform(*this, location); } 62 58 63 GLhandleARB getProgram() const { return this->shaderProgram; } 64 GLhandleARB getVertexS() const { return this->vertexShader; } 65 GLhandleARB getFragmentS() const { return this->fragmentShader; } 59 GLhandleARB getProgram() const { return this->data->getProgram(); } 60 GLhandleARB getVertexS() const { return this->data->getVertexS(); } 61 GLhandleARB getFragmentS() const { return this->data->getFragmentS(); } 62 63 void activateShader() const; 64 static void deactivateShader(); 65 66 void debug() const { this->data->debug(); }; 67 66 68 67 69 static bool checkShaderAbility(); 68 void activateShader();69 static void deactivateShader();70 71 void debug() const;72 70 73 71 inline static bool isShaderActive() { return (Shader::storedShader != NULL) ? true : false; }; 74 inline static Shader* getActiveShader() { return Shader::storedShader; }; 75 inline static void suspendShader() { Shader* currShader = storedShader; if (storedShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} }; 72 inline static const Shader* getActiveShader() { return Shader::storedShader; }; 73 74 inline static void suspendShader() { const Shader* currShader = storedShader; if (storedShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} }; 76 75 inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; }; 77 76 78 static void printError(GLhandleARB program); 77 private: 78 ShaderData::Pointer data; 79 79 80 private: 81 void bindShader(const char* name, const float* value, size_t size); 82 void linkShaderProgram(); 83 bool readShader(const std::string& fileName, std::string& output); 84 bool loadShaderProgramm(Shader::Type type, const std::string& fileName); 85 void deleteProgram(Shader::Type type); 86 87 private: 88 std::string fragmentShaderFile; 89 std::string vertexShaderFile; 90 91 GLhandleARB shaderProgram; 92 93 GLhandleARB vertexShader; 94 GLhandleARB fragmentShader; 95 96 97 static Shader* storedShader; 80 static const Shader* storedShader; 98 81 }; 99 82
Note: See TracChangeset
for help on using the changeset viewer.