Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/water/src/lib/graphics/shader.h @ 7818

Last change on this file since 7818 was 7818, checked in by bensch, 18 years ago

Better nicer Shader

File size: 2.0 KB
RevLine 
[4838]1/*!
[5261]2 * @file shader.h
3 * @brief Definition of the Shader rendering class
[3245]4*/
[1853]5
[5261]6#ifndef _SHADER_H
7#define _SHADER_H
[1853]8
[3543]9#include "base_object.h"
[5261]10#include "glincl.h"
[7164]11#include <vector>
[1853]12
[5261]13
[4838]14// FORWARD DECLARATION
[3543]15
16
[3955]17//! A class for ...
[7818]18class Shader : public BaseObject
19{
20  public:
21  typedef enum
22  {
23    None       = 0,
24    Fragment   = 1,
25    Vertex     = 2,
[1853]26
[7818]27    Program    = 4,
28  } Type;
29
[5323]30  public:
[7221]31  Shader(const std::string& vertexShaderFile = "", const std::string& fragmentShaderFile = "");
[5261]32  virtual ~Shader();
[7221]33  static Shader* getShader(const std::string& vertexShaderFile, const std::string& fragmentShaderFile);
[5323]34  static bool unload(Shader* shader);
[1853]35
[7818]36
37  static bool checkShaderAbility();
[5266]38  void activateShader();
39  static void deactivateShader();
[3245]40
[7818]41
42  bool loadShaderProgramm(Shader::Type type, const std::string& fileName);
43  void deleteProgram(Shader::Type type);
44
45  void linkShaderProgram();
46
47
[7221]48  char* fileRead(const std::string& fileName);
49  std::vector<char*>* fileReadArray(const std::string& fileName);
[5266]50
[5317]51
[7195]52  inline static bool shaderActive() { return (Shader::storedShader != NULL)? true : false; };
[5323]53  inline static Shader* getActiveShader() { return Shader::storedShader; };
[5318]54  inline static void suspendShader() { Shader* currShader = storedShader; if (storedShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} };
[5317]55  inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; };
56
57
[7818]58  GLhandleARB getProgram() const { return this->shaderProgram; }
59  GLhandleARB getVertexS() const { return this->vertexShader; }
60  GLhandleARB getFragmentS() const { return this->fragmentShader; }
61
[5262]62  void debug() const;
63
[7818]64  static void printError(GLhandleARB program);
[5262]65
[7818]66
[3245]67 private:
[7221]68   std::string            fragmentShaderFile;
69   std::string            vertexShaderFile;
[7818]70
[5319]71   GLhandleARB            shaderProgram;
[7818]72
[5319]73   GLhandleARB            vertexShader;
74   GLhandleARB            fragmentShader;
[5317]75
76   static Shader*         storedShader;
[1853]77};
78
[5261]79#endif /* _SHADER_H */
Note: See TracBrowser for help on using the repository browser.