Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/lib/graphics/shader.h @ 7936

Last change on this file since 7936 was 7785, checked in by bensch, 19 years ago

orxonox/trunk: merged the Changes from the water branche back to the trunk.

File size: 1.9 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
14typedef enum
15{
16  SHADER_NONE       = 0,
17  SHADER_FRAGMENT   = 1,
18  SHADER_VERTEX     = 0,
19
20} SHADER_TYPE;
21
[4838]22// FORWARD DECLARATION
[3543]23
24
[3955]25//! A class for ...
[5261]26class Shader : public BaseObject {
[1853]27
[5323]28  public:
[7221]29  Shader(const std::string& vertexShaderFile = "", const std::string& fragmentShaderFile = "");
[5261]30  virtual ~Shader();
[7221]31  static Shader* getShader(const std::string& vertexShaderFile, const std::string& fragmentShaderFile);
[5323]32  static bool unload(Shader* shader);
[1853]33
[7221]34  bool loadShaderProgramm(SHADER_TYPE type, const std::string& fileName);
[5266]35  void activateShader();
36  static void deactivateShader();
[5262]37  void deleteProgram(SHADER_TYPE type);
[3245]38
[7221]39  char* fileRead(const std::string& fileName);
40  std::vector<char*>* fileReadArray(const std::string& fileName);
[5266]41
[5317]42  static bool checkShaderAbility();
43
[7195]44  inline static bool shaderActive() { return (Shader::storedShader != NULL)? true : false; };
[5323]45  inline static Shader* getActiveShader() { return Shader::storedShader; };
[5318]46  inline static void suspendShader() { Shader* currShader = storedShader; if (storedShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} };
[5317]47  inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; };
48
[7785]49  GLhandleARB getProgram() { return this->shaderProgram; }
50  GLhandleARB getVertexS() { return this->vertexShader; }
51  GLhandleARB getFragmentS() { return this->fragmentShader; }
[5317]52
[5319]53  void printError(GLhandleARB program);
[5262]54  void debug() const;
55
56  private:
57
[3245]58 private:
[7221]59   std::string            fragmentShaderFile;
60   std::string            vertexShaderFile;
[5319]61   GLhandleARB            shaderProgram;
62   GLhandleARB            vertexShader;
63   GLhandleARB            fragmentShader;
[5317]64
65   static Shader*         storedShader;
[1853]66};
67
[5261]68#endif /* _SHADER_H */
Note: See TracBrowser for help on using the repository browser.