18 #ifndef INCLUDED_SHADERPROGRAM 19 #define INCLUDED_SHADERPROGRAM 80 const std::map<CStrIntern, int>& vertexIndexes,
const std::map<CStrIntern, frag_index_pair_t>& fragmentIndexes,
88 const std::map<CStrIntern, int>& vertexAttribs,
123 virtual void Reload() = 0;
134 virtual void Bind() = 0;
139 virtual void Unbind() = 0;
153 virtual void BindTexture(texture_id_t
id, GLuint tex) = 0;
160 virtual void Uniform(
Binding id,
float v0,
float v1,
float v2,
float v3) = 0;
172 void Uniform(uniform_id_t
id,
int v);
173 void Uniform(uniform_id_t
id,
float v);
174 void Uniform(uniform_id_t
id,
float v0,
float v1);
177 void Uniform(uniform_id_t
id,
float v0,
float v1,
float v2,
float v3);
183 virtual void VertexPointer(GLint size, GLenum type, GLsizei stride,
const void* pointer);
184 virtual void NormalPointer(GLenum type, GLsizei stride,
const void* pointer);
185 virtual void ColorPointer(GLint size, GLenum type, GLsizei stride,
const void* pointer);
186 virtual void TexCoordPointer(GLenum texture, GLint size, GLenum type, GLsizei stride,
const void* pointer);
187 virtual void VertexAttribPointer(attrib_id_t
id, GLint size, GLenum type, GLboolean normalized, GLsizei stride,
const void* pointer);
188 virtual void VertexAttribIPointer(attrib_id_t
id, GLint size, GLenum type, GLsizei stride,
const void* pointer);
208 #endif // INCLUDED_SHADERPROGRAM virtual void Bind()=0
Binds the shader into the GL context.
virtual Binding GetTextureBinding(texture_id_t id)=0
Binding(int a, int b)
Definition: ShaderProgram.h:107
int m_ValidStreams
Definition: ShaderProgram.h:205
void BindTexture(texture_id_t id, CTexturePtr tex)
Definition: ShaderProgram.cpp:698
int GetStreamFlags() const
Returns bitset of STREAM_* value, indicating what vertex data streams the vertex shader needs (e...
Definition: ShaderProgram.cpp:693
virtual Binding GetUniformBinding(uniform_id_t id)=0
bool IsValid() const
Returns whether this shader was successfully loaded.
Definition: ShaderProgram.cpp:688
virtual void VertexAttribPointer(attrib_id_t id, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:772
virtual ~CShaderProgram()
Definition: ShaderProgram.h:121
Definition: Vector3D.h:28
void UnbindClientStates()
Definition: ShaderProgram.cpp:867
static CShaderProgram * ConstructARB(const VfsPath &vertexFile, const VfsPath &fragmentFile, const CShaderDefines &defines, const std::map< CStrIntern, int > &vertexIndexes, const std::map< CStrIntern, frag_index_pair_t > &fragmentIndexes, int streamflags)
Construct based on ARB vertex/fragment program files.
Definition: ShaderProgram.cpp:671
void AssertPointersBound()
Checks that all the required vertex attributes have been set.
Definition: ShaderProgram.cpp:889
int m_StreamFlags
Definition: ShaderProgram.h:200
virtual void Unbind()=0
Unbinds the shader from the GL context.
static CShaderProgram * ConstructFFP(const std::string &id, const CShaderDefines &defines)
Construct an instance of a pre-defined fixed-function pipeline setup.
Definition: ShaderProgramFFP.cpp:1136
Definition: ShaderProgram.h:43
Definition: Matrix3D.h:33
Definition: ShaderProgram.h:38
void BindClientStates()
Definition: ShaderProgram.cpp:838
virtual void NormalPointer(GLenum type, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:818
CStrIntern texture_id_t
Definition: ShaderProgram.h:71
Interned 8-bit strings.
Definition: CStrIntern.h:37
virtual void VertexAttribIPointer(attrib_id_t id, GLint size, GLenum type, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:778
CStrIntern attrib_id_t
Definition: ShaderProgram.h:70
bool m_IsValid
Definition: ShaderProgram.h:199
Definition: ShaderProgram.h:45
Definition: ShaderProgram.h:40
i64 Handle
`handle' representing a reference to a resource (sound, texture, etc.)
Definition: handle.h:41
CShaderProgram(int streamflags)
Definition: ShaderProgram.cpp:655
Represents a mapping of name strings to value strings, for use with #if and #ifdef and similar condit...
Definition: ShaderDefines.h:133
Binding()
Definition: ShaderProgram.h:109
std::shared_ptr< CTexture > CTexturePtr
Definition: Texture.h:22
Definition: ShaderProgram.h:48
Definition: ShaderProgram.h:47
virtual void Uniform(Binding id, float v0, float v1, float v2, float v3)=0
Represents a uniform attribute or texture binding.
Definition: ShaderProgram.h:105
Definition: ShaderProgram.h:42
Definition: ShaderProgram.h:41
virtual void TexCoordPointer(GLenum texture, GLint size, GLenum type, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:830
Definition: ShaderProgram.h:46
std::pair< int, GLenum > frag_index_pair_t
Definition: ShaderProgram.h:73
Definition: ShaderProgram.h:44
int first
Definition: ShaderProgram.h:117
int second
Definition: ShaderProgram.h:118
A compiled vertex+fragment shader program.
Definition: ShaderProgram.h:65
virtual void VertexPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:812
Definition: ShaderProgram.h:39
virtual void ColorPointer(GLint size, GLenum type, GLsizei stride, const void *pointer)
Definition: ShaderProgram.cpp:824
static CShaderProgram * ConstructGLSL(const VfsPath &vertexFile, const VfsPath &fragmentFile, const CShaderDefines &defines, const std::map< CStrIntern, int > &vertexAttribs, int streamflags)
Construct based on GLSL vertex/fragment shader files.
Definition: ShaderProgram.cpp:680
NONCOPYABLE(CShaderProgram)
CStrIntern uniform_id_t
Definition: ShaderProgram.h:72
bool Active()
Returns whether this uniform attribute is active in the shader.
Definition: ShaderProgram.h:115