Pyrogenesis  trunk
Public Member Functions | Private Attributes | List of all members
CShaderProgramGLSL Class Reference
Inheritance diagram for CShaderProgramGLSL:
Inheritance graph
[legend]
Collaboration diagram for CShaderProgramGLSL:
Collaboration graph
[legend]

Public Member Functions

 CShaderProgramGLSL (const VfsPath &vertexFile, const VfsPath &fragmentFile, const CShaderDefines &defines, const std::map< CStrIntern, int > &vertexAttribs, int streamflags)
 
 ~CShaderProgramGLSL ()
 
bool Compile (GLhandleARB shader, const VfsPath &file, const CStr &code)
 
bool Link ()
 
virtual void Reload ()
 
void Unload ()
 
virtual void Bind ()
 Binds the shader into the GL context. More...
 
virtual void Unbind ()
 Unbinds the shader from the GL context. More...
 
virtual Binding GetTextureBinding (texture_id_t id)
 
virtual void BindTexture (texture_id_t id, Handle tex)
 
virtual void BindTexture (texture_id_t id, GLuint tex)
 
virtual void BindTexture (Binding id, Handle tex)
 
virtual Binding GetUniformBinding (uniform_id_t id)
 
virtual void Uniform (Binding id, float v0, float v1, float v2, float v3)
 
virtual void Uniform (Binding id, const CMatrix3D &v)
 
virtual void Uniform (Binding id, size_t count, const CMatrix3D *v)
 
virtual void VertexPointer (GLint size, GLenum type, GLsizei stride, const void *pointer)
 
virtual void NormalPointer (GLenum type, GLsizei stride, const void *pointer)
 
virtual void ColorPointer (GLint size, GLenum type, GLsizei stride, const void *pointer)
 
virtual void TexCoordPointer (GLenum texture, GLint size, GLenum type, GLsizei stride, const void *pointer)
 
virtual void VertexAttribPointer (attrib_id_t id, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer)
 
virtual void VertexAttribIPointer (attrib_id_t id, GLint size, GLenum type, GLsizei stride, const void *pointer)
 
- Public Member Functions inherited from CShaderProgram
virtual ~CShaderProgram ()
 
bool IsValid () const
 Returns whether this shader was successfully loaded. More...
 
int GetStreamFlags () const
 Returns bitset of STREAM_* value, indicating what vertex data streams the vertex shader needs (e.g. More...
 
void BindTexture (texture_id_t id, CTexturePtr tex)
 
void Uniform (Binding id, int v)
 
void Uniform (Binding id, float v)
 
void Uniform (Binding id, float v0, float v1)
 
void Uniform (Binding id, const CVector3D &v)
 
void Uniform (Binding id, const CColor &v)
 
void Uniform (uniform_id_t id, int v)
 
void Uniform (uniform_id_t id, float v)
 
void Uniform (uniform_id_t id, float v0, float v1)
 
void Uniform (uniform_id_t id, const CVector3D &v)
 
void Uniform (uniform_id_t id, const CColor &v)
 
void Uniform (uniform_id_t id, float v0, float v1, float v2, float v3)
 
void Uniform (uniform_id_t id, const CMatrix3D &v)
 
void Uniform (uniform_id_t id, size_t count, const CMatrix3D *v)
 
void AssertPointersBound ()
 Checks that all the required vertex attributes have been set. More...
 

Private Attributes

VfsPath m_VertexFile
 
VfsPath m_FragmentFile
 
CShaderDefines m_Defines
 
std::map< CStrIntern, int > m_VertexAttribs
 
GLhandleARB m_Program
 
GLhandleARB m_VertexShader
 
GLhandleARB m_FragmentShader
 
std::map< CStrIntern, std::pair< int, GLenum > > m_Uniforms
 
std::map< CStrIntern, std::pair< GLenum, int > > m_Samplers
 

Additional Inherited Members

- Public Types inherited from CShaderProgram
typedef CStrIntern attrib_id_t
 
typedef CStrIntern texture_id_t
 
typedef CStrIntern uniform_id_t
 
typedef std::pair< int, GLenum > frag_index_pair_t
 
- Static Public Member Functions inherited from CShaderProgram
static CShaderProgramConstructARB (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. More...
 
static CShaderProgramConstructGLSL (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. More...
 
static CShaderProgramConstructFFP (const std::string &id, const CShaderDefines &defines)
 Construct an instance of a pre-defined fixed-function pipeline setup. More...
 
- Protected Member Functions inherited from CShaderProgram
 CShaderProgram (int streamflags)
 
void BindClientStates ()
 
void UnbindClientStates ()
 
- Protected Attributes inherited from CShaderProgram
bool m_IsValid
 
int m_StreamFlags
 
int m_ValidStreams
 

Constructor & Destructor Documentation

CShaderProgramGLSL::CShaderProgramGLSL ( const VfsPath vertexFile,
const VfsPath fragmentFile,
const CShaderDefines defines,
const std::map< CStrIntern, int > &  vertexAttribs,
int  streamflags 
)
inline
CShaderProgramGLSL::~CShaderProgramGLSL ( )
inline

Member Function Documentation

virtual void CShaderProgramGLSL::Bind ( )
inlinevirtual

Binds the shader into the GL context.

Call this before calling Uniform() or trying to render with it.

Implements CShaderProgram.

virtual void CShaderProgramGLSL::BindTexture ( texture_id_t  id,
Handle  tex 
)
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::BindTexture ( texture_id_t  id,
GLuint  tex 
)
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::BindTexture ( Binding  id,
Handle  tex 
)
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::ColorPointer ( GLint  size,
GLenum  type,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

bool CShaderProgramGLSL::Compile ( GLhandleARB  shader,
const VfsPath file,
const CStr &  code 
)
inline
virtual Binding CShaderProgramGLSL::GetTextureBinding ( texture_id_t  id)
inlinevirtual

Implements CShaderProgram.

virtual Binding CShaderProgramGLSL::GetUniformBinding ( uniform_id_t  id)
inlinevirtual

Implements CShaderProgram.

bool CShaderProgramGLSL::Link ( )
inline
virtual void CShaderProgramGLSL::NormalPointer ( GLenum  type,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

virtual void CShaderProgramGLSL::Reload ( )
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::TexCoordPointer ( GLenum  texture,
GLint  size,
GLenum  type,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

virtual void CShaderProgramGLSL::Unbind ( )
inlinevirtual

Unbinds the shader from the GL context.

Call this after rendering with it.

Implements CShaderProgram.

virtual void CShaderProgramGLSL::Uniform ( Binding  id,
float  v0,
float  v1,
float  v2,
float  v3 
)
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::Uniform ( Binding  id,
const CMatrix3D v 
)
inlinevirtual

Implements CShaderProgram.

virtual void CShaderProgramGLSL::Uniform ( Binding  id,
size_t  count,
const CMatrix3D v 
)
inlinevirtual

Implements CShaderProgram.

void CShaderProgramGLSL::Unload ( )
inline
virtual void CShaderProgramGLSL::VertexAttribIPointer ( attrib_id_t  id,
GLint  size,
GLenum  type,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

virtual void CShaderProgramGLSL::VertexAttribPointer ( attrib_id_t  id,
GLint  size,
GLenum  type,
GLboolean  normalized,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

virtual void CShaderProgramGLSL::VertexPointer ( GLint  size,
GLenum  type,
GLsizei  stride,
const void *  pointer 
)
inlinevirtual

Reimplemented from CShaderProgram.

Member Data Documentation

CShaderDefines CShaderProgramGLSL::m_Defines
private
VfsPath CShaderProgramGLSL::m_FragmentFile
private
GLhandleARB CShaderProgramGLSL::m_FragmentShader
private
GLhandleARB CShaderProgramGLSL::m_Program
private
std::map<CStrIntern, std::pair<GLenum, int> > CShaderProgramGLSL::m_Samplers
private
std::map<CStrIntern, std::pair<int, GLenum> > CShaderProgramGLSL::m_Uniforms
private
std::map<CStrIntern, int> CShaderProgramGLSL::m_VertexAttribs
private
VfsPath CShaderProgramGLSL::m_VertexFile
private
GLhandleARB CShaderProgramGLSL::m_VertexShader
private

The documentation for this class was generated from the following file: