Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

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

orxonox/trunk: Shaders are now NOT renderen in 2D-mode.
After 2D-mode is left, the Shader will be reactivated

File size: 1.4 KB
Line 
1/*!
2 * @file shader.h
3 * @brief Definition of the Shader rendering class
4*/
5
6#ifndef _SHADER_H
7#define _SHADER_H
8
9#include "base_object.h"
10#include "glincl.h"
11
12
13typedef enum
14{
15  SHADER_NONE       = 0,
16  SHADER_FRAGMENT   = 1,
17  SHADER_VERTEX     = 0,
18
19} SHADER_TYPE;
20
21// FORWARD DECLARATION
22
23
24//! A class for ...
25class Shader : public BaseObject {
26
27 public:
28  Shader(const char* vertexShaderFile = NULL, const char* fragmentShaderFile = NULL);
29  virtual ~Shader();
30
31  bool loadShaderProgramm(SHADER_TYPE type, const char* fileName);
32  void activateShader();
33  static void deactivateShader();
34  void deleteProgram(SHADER_TYPE type);
35
36  char* fileRead(const char* fileName);
37
38  static bool checkShaderAbility();
39
40  inline static bool shaderActive() { return (Shader::storedShader != NULL)?true:false; };
41  inline static void suspendShader() { Shader* currShader=storedShader; if (currShader!= NULL) { Shader::deactivateShader(); Shader::storedShader = currShader;} };
42  inline static void restoreShader() { if (storedShader != NULL) storedShader->activateShader(); storedShader = NULL; };
43
44
45  void printError(GLenum program);
46  void debug() const;
47
48  private:
49
50 private:
51   char*                  fragmentShaderFile;
52   char*                  vertexShaderFile;
53   GLenum                 shaderProgram;
54   GLenum                 vertexShader;
55   GLenum                 fragmentShader;
56
57   static Shader*         storedShader;
58};
59
60#endif /* _SHADER_H */
Note: See TracBrowser for help on using the repository browser.