OPTPiX SpriteStudio SDK
 All Classes Namespaces Functions Variables Enumerations Enumerator Pages
ssplayer_shader_gl.h
1 #ifndef __SSOPENGLSHADER__
2 #define __SSOPENGLSHADER__
3 
4 #include <string>
5 #include <vector>
6 
7 #define PUT_UNIFORM_WARNIG (1)
8 
9 
11 public:
12  GLhandleARB h;
13 
14 protected:
15  std::string myname;
16  std::string source;
17 
18 public:
19  SSOpenGLShader( const std::string& str, const GLenum shader_type );
20  SSOpenGLShader( const std::string& name, const std::string& str, const GLenum shader_type );
21  virtual ~SSOpenGLShader();
22  virtual int Compile( void );
23  inline GLhandleARB GetHandle( void ) const { return h; }
24 };
25 
26 
28 {
29 public:
30  SSOpenGLVertexShader( const std::string& str );
31  SSOpenGLVertexShader( const std::string& name , const std::string& str );
32  virtual ~SSOpenGLVertexShader(){}
33 
34 };
35 
36 
38 {
39 public:
40  SSOpenGLFragmentShader( const std::string& filename );
41  SSOpenGLFragmentShader( const std::string& name , const std::string& str );
42  virtual ~SSOpenGLFragmentShader(){}
43 
44 };
45 
46 
48 public:
49  GLhandleARB h;
50 
51 protected:
52 
53 public:
55  virtual ~SSOpenGLProgramObject( );
56 
57  GLhandleARB GetID(){ return h; }
58 
59  virtual void Attach( const SSOpenGLShader *s );
60  virtual int Link( void );
61  virtual void Use( void );
62 
63  inline void Enable( void ) { Use(); }
64  inline void Disable( void ) { glUseProgramObjectARB( 0 ); }
65 
66  inline GLint GetUniformLocation( const char *name )
67  {
68  GLint ul = glGetUniformLocationARB( h, name );
69  if ( ul == -1 ) {
70  }
71  return ul;
72  }
73 
74  inline GLint GetAttribLocation( const char *name )
75  {
76  GLint al = glGetAttribLocationARB( h, name );
77  if ( al == -1 ) {
78  }
79  return al;
80  }
81 };
82 
83 extern SSOpenGLProgramObject* glpgObject; //カレントシェーダーオブジェクチE
84 
86 {
87 private:
88  std::vector<SSOpenGLProgramObject*> m_shader_list;
89  static SSOpenGLShaderMan* m_Myinst;
90 public:
92  virtual ~SSOpenGLShaderMan(){}
93 
94  static SSOpenGLProgramObject* SetCurrent(int index)
95  {
96  glpgObject = m_Myinst->m_shader_list[index];
97  return glpgObject;
98  }
99 
100  static void Create()
101  {
102  if ( m_Myinst == 0)
103  m_Myinst = new SSOpenGLShaderMan();
104  }
105 
106  static void Destory()
107  {
108  m_Myinst->_Destroy();
109  }
110 
111  void _Destroy()
112  {
113  for ( std::vector<SSOpenGLProgramObject*>::iterator itr = m_shader_list.begin();
114  itr != m_shader_list.end() ; itr++ )
115  {
116  delete (*itr);
117  }
118  m_Myinst->m_shader_list.clear();
119 
120  if ( m_Myinst != 0)
121  {
122  delete m_Myinst;
123  m_Myinst = 0;
124  }
125  }
126 
127  static void PushPgObject(SSOpenGLProgramObject *obj)
128  {
129  m_Myinst->m_shader_list.push_back(obj);
130  }
131 
132 };
133 
134 
135 
136 int SsGL_CheckShaderReady( void );
137 extern SSOpenGLShaderMan* glshaderMan;
138 
139 
140 #endif
141