Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk: some minor file-handling

File size: 1.5 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"
[1853]11
[5318]12template<class T> class Array;
[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
[1904]28 public:
[5262]29  Shader(const char* vertexShaderFile = NULL, const char* fragmentShaderFile = NULL);
[5261]30  virtual ~Shader();
[1853]31
[5261]32  bool loadShaderProgramm(SHADER_TYPE type, const char* fileName);
[5266]33  void activateShader();
34  static void deactivateShader();
[5262]35  void deleteProgram(SHADER_TYPE type);
[3245]36
[5266]37  char* fileRead(const char* fileName);
[5318]38  Array<char*>* fileReadArray(const char* fileName);
[5266]39
[5317]40  static bool checkShaderAbility();
41
42  inline static bool shaderActive() { return (Shader::storedShader != NULL)?true:false; };
[5318]43  inline static void suspendShader() { Shader* currShader = storedShader; if (storedShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} };
[5317]44  inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; };
45
46
[5319]47  void printError(GLhandleARB program);
[5262]48  void debug() const;
49
50  private:
51
[3245]52 private:
[5261]53   char*                  fragmentShaderFile;
54   char*                  vertexShaderFile;
[5319]55   GLhandleARB            shaderProgram;
56   GLhandleARB            vertexShader;
57   GLhandleARB            fragmentShader;
[5317]58
59   static Shader*         storedShader;
[1853]60};
61
[5261]62#endif /* _SHADER_H */
Note: See TracBrowser for help on using the repository browser.