Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Sep 25, 2006, 12:10:07 PM (18 years ago)
Author:
bensch
Message:

Switching to new Shader layout, with Shader and ShaderData. Shaders do not render for the time being

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/new_class_id/src/lib/graphics/shader.h

    r9806 r9818  
    88
    99#include "base_object.h"
    10 #include "glincl.h"
    11 #include <vector>
    12 
     10#include "shader_data.h"
    1311
    1412// FORWARD DECLARATION
     
    2422  {
    2523  public:
    26     Uniform(const Shader* shader, const std::string& location) { this->uniform = glGetUniformLocationARB(shader->getProgram(), location.c_str()) ; }
    2724    Uniform(const Shader& shader, const std::string& location) { this->uniform = glGetUniformLocation(shader.getProgram(), location.c_str()) ; };
    2825    Uniform(GLhandleARB shaderProgram, const std::string& location) { this->uniform = glGetUniformLocation(shaderProgram, location.c_str()) ; };
     
    4542  };
    4643
    47   //! The Type of Shader.
    48   typedef enum
    49   {
    50     None       = 0,     //!< No Type at all
    51     Fragment   = 1,     //!< Fragment Shader.
    52     Vertex     = 2,     //!< Vertex Shader.
    53     Program    = 4,     //!< Compiled Shader Programm.
    54   }  Type;
    5544
    5645public:
    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); }
    5955
    6056
    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); }
    6258
    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
    6668
    6769  static bool checkShaderAbility();
    68   void activateShader();
    69   static void deactivateShader();
    70 
    71   void debug() const;
    7270
    7371  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;} };
    7675  inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; };
    7776
    78   static void printError(GLhandleARB program);
     77private:
     78  ShaderData::Pointer    data;
    7979
    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;
    9881};
    9982
Note: See TracChangeset for help on using the changeset viewer.