Files
bullet3/Extras/GPUphysics/shaderSupport.h

80 lines
2.2 KiB
C++

#include <stdio.h>
#include <stdlib.h>
class GLSL_Shader ;
class FrameBufferObject ;
class GLSL_ShaderPair
{
GLSL_Shader *vertShader ;
GLSL_Shader *fragShader ;
GLhandleARB handle ;
char *name ;
bool success ;
bool link () ;
public:
GLSL_ShaderPair ( const char *_name,
const char *vertFname, const char *fragFname ) ;
GLSL_ShaderPair ( const char *_name,
const char *vertSource, const char *vertName,
const char *fragSource, const char *fragName ) ;
~GLSL_ShaderPair () ;
bool compiledOK () { return success ; }
/* Debug functions */
void showActiveUniforms ( FILE *fd = NULL ) ;
void showActiveAttribs ( FILE *fd = NULL ) ;
GLint getUniformLocation ( const char *varname ) ;
void applyTexture ( const char *uniformName,
FrameBufferObject *fbo,
int slot ) ;
void setUniform1f ( const char *uniformName, float valueX )
{
glUniform1fARB ( getUniformLocation ( uniformName ), valueX ) ;
}
void setUniform2f ( const char *uniformName, float valueX,
float valueY )
{
glUniform2fARB ( getUniformLocation ( uniformName ), valueX, valueY ) ;
}
void setUniform3f ( const char *uniformName, float valueX,
float valueY,
float valueZ )
{
glUniform3fARB ( getUniformLocation ( uniformName ), valueX, valueY,
valueZ ) ;
}
void setUniform4f ( const char *uniformName, float valueX,
float valueY,
float valueZ,
float valueW )
{
glUniform4fARB ( getUniformLocation ( uniformName ), valueX, valueY,
valueZ, valueW ) ;
}
/* To apply the shaders for rendering */
void use ()
{
assert ( success ) ;
glUseProgramObjectARB ( handle ) ;
}
} ;