OPTPiX SpriteStudio SDK
Loading...
Searching...
No Matches
ssplayer_shader_gl.h
Go to the documentation of this file.
1#ifndef __SSOPENGLSHADER__
2#define __SSOPENGLSHADER__
3
4#include <string>
5#include <vector>
6
7#include <memory>
8#include <utility>
9
10#define SPRITESTUDIO6SDK_PUT_UNIFORM_WARNING (1)
11
12namespace spritestudio6
13{
14
16public:
17
18#if USE_GLEW
20#else
22#endif
23
24protected:
25 std::string myname;
26 std::string source;
27
28public:
29 SSOpenGLShader( const std::string& str, const GLenum shader_type );
30 SSOpenGLShader( const std::string& name, const std::string& str, const GLenum shader_type );
31 virtual ~SSOpenGLShader();
32 virtual int Compile( void );
33
34#if USE_GLEW
35 inline GLhandleARB GetHandle( void ) const { return h; }
36#else
37 inline GLuint GetHandle( void ) const { return h; }
38#endif
39
40};
41
42
44{
45public:
46 SSOpenGLVertexShader( const std::string& str );
47 SSOpenGLVertexShader( const std::string& name , const std::string& str );
49
50};
51
52
54{
55public:
56 SSOpenGLFragmentShader( const std::string& filename );
57 SSOpenGLFragmentShader( const std::string& name , const std::string& str );
59
60};
61
62
64public:
65
66#if USE_GLEW
68#else
70#endif
71
72protected:
73
74public:
76 virtual ~SSOpenGLProgramObject( );
77
78#if USE_GLEW
79 GLhandleARB GetID(){ return h; }
80#else
81 GLuint GetID(){ return h; }
82#endif
83
84
85 virtual void Attach( const SSOpenGLShader *s );
86 virtual int Link( void );
87 virtual void Use( void );
88
89 inline void Enable( void ) { Use(); }
90 void Disable( void );
91 GLint GetUniformLocation( const char *name );
92
93 GLint GetAttribLocation( const char *name );
94};
95
96extern SSOpenGLProgramObject* glpgObject; //カレントシェーダーオブジェクト
97
99{
100private:
101 std::vector<std::unique_ptr<SSOpenGLProgramObject>> m_shader_list;
102 static std::unique_ptr<SSOpenGLShaderMan> m_Myinst;
103public:
106
108 {
109 SSOpenGLShaderMan* myInstRaw = m_Myinst.get();
110 glpgObject = (myInstRaw->m_shader_list[index]).get();
111 return glpgObject;
112 }
113
114 static void Create()
115 {
116 if ( !m_Myinst )
117 m_Myinst.reset( new SSOpenGLShaderMan() );
118 }
119
120 static void Destory()
121 {
122 m_Myinst->_Destroy();
123 }
124
125 void _Destroy()
126 {
127 for ( std::vector<std::unique_ptr<SSOpenGLProgramObject>>::iterator itr = m_shader_list.begin();
128 itr != m_shader_list.end() ; itr++ )
129 {
130 itr->reset();
131 }
132 (m_Myinst.get())->m_shader_list.clear();
133
134 if ( m_Myinst )
135 {
136 m_Myinst.reset();
137 }
138 }
139
141 {
142 (m_Myinst.get())->m_shader_list.push_back( std::move( std::unique_ptr<SSOpenGLProgramObject>( obj ) ) );
143 }
144
145};
146
147
148
149int SsGL_CheckShaderReady( void );
150extern SSOpenGLShaderMan* glshaderMan;
151
152} // namespace spritestudio6
153
154#endif
155
SSOpenGLFragmentShader(const std::string &filename)
Definition ssplayer_shader_gl.cpp:215
virtual ~SSOpenGLFragmentShader()
Definition ssplayer_shader_gl.h:58
Definition ssplayer_shader_gl.h:63
virtual void Attach(const SSOpenGLShader *s)
Definition ssplayer_shader_gl.cpp:251
GLuint GetID()
Definition ssplayer_shader_gl.h:81
GLint GetAttribLocation(const char *name)
Definition ssplayer_shader_gl.cpp:291
void Enable(void)
Definition ssplayer_shader_gl.h:89
GLuint h
Definition ssplayer_shader_gl.h:69
virtual int Link(void)
Definition ssplayer_shader_gl.cpp:306
virtual void Use(void)
Definition ssplayer_shader_gl.cpp:366
void Disable(void)
Definition ssplayer_shader_gl.cpp:265
virtual ~SSOpenGLProgramObject()
Definition ssplayer_shader_gl.cpp:242
SSOpenGLProgramObject()
Definition ssplayer_shader_gl.cpp:228
GLint GetUniformLocation(const char *name)
Definition ssplayer_shader_gl.cpp:277
Definition ssplayer_shader_gl.h:15
SSOpenGLShader(const std::string &str, const GLenum shader_type)
Definition ssplayer_shader_gl.cpp:83
std::string myname
Definition ssplayer_shader_gl.h:25
GLuint h
Definition ssplayer_shader_gl.h:21
GLuint GetHandle(void) const
Definition ssplayer_shader_gl.h:37
virtual ~SSOpenGLShader()
Definition ssplayer_shader_gl.cpp:134
std::string source
Definition ssplayer_shader_gl.h:26
virtual int Compile(void)
Definition ssplayer_shader_gl.cpp:145
static void PushPgObject(SSOpenGLProgramObject *obj)
Definition ssplayer_shader_gl.h:140
static SSOpenGLProgramObject * SetCurrent(int index)
Definition ssplayer_shader_gl.h:107
static void Destory()
Definition ssplayer_shader_gl.h:120
static void Create()
Definition ssplayer_shader_gl.h:114
void _Destroy()
Definition ssplayer_shader_gl.h:125
virtual ~SSOpenGLShaderMan()
Definition ssplayer_shader_gl.h:105
SSOpenGLShaderMan()
Definition ssplayer_shader_gl.h:104
virtual ~SSOpenGLVertexShader()
Definition ssplayer_shader_gl.h:48
SSOpenGLVertexShader(const std::string &str)
Definition ssplayer_shader_gl.cpp:206
unsigned int GLenum
Definition glad.h:90
unsigned int GLuint
Definition glad.h:99
GLuint const GLchar * name
Definition glad.h:3345
GLuint index
Definition glad.h:3345
int GLint
Definition glad.h:98
unsigned int GLhandleARB
Definition glad.h:113
GLdouble s
Definition glad.h:3009
Definition ISsEffectRender.h:5
SSOpenGLShaderMan * glshaderMan
SSOpenGLProgramObject * glpgObject
Definition ssplayer_shader_gl.cpp:16
int SsGL_CheckShaderReady(void)
Definition ssplayer_shader_gl.cpp:24