Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

GLShaderLoader Class Reference

#include <glshader.h>

List of all members.

Static Public Member Functions

static GLShaderStatus CreateFragmentShader (const std::string &, GLFragmentShader **)
static GLShaderStatus CreateFragmentShader (const std::vector< std::string > &, GLFragmentShader **)
static GLShaderStatus CreateProgram (const std::string &vs, const std::string &fs, GLProgram **)
static GLShaderStatus CreateProgram (const std::vector< std::string > &vs, const std::vector< std::string > &fs, GLProgram **)
static GLShaderStatus CreateProgram (const GLVertexShader &vs, const GLFragmentShader &fs, GLProgram **)
static GLShaderStatus CreateVertexShader (const std::string &, GLVertexShader **)
static GLShaderStatus CreateVertexShader (const std::vector< std::string > &, GLVertexShader **)


Member Function Documentation

GLShaderStatus GLShaderLoader::CreateFragmentShader const std::string ,
GLFragmentShader ** 
[static]
 

Definition at line 257 of file glshader.cpp.

References CreateFragmentShader().

00259 {
00260     vector<string> v;
00261     v.push_back(source);
00262     return CreateFragmentShader(v, fs);
00263 }

GLShaderStatus GLShaderLoader::CreateFragmentShader const std::vector< std::string > &  ,
GLFragmentShader ** 
[static]
 

Definition at line 219 of file glshader.cpp.

References g_shaderLogFile, GLShader::getID(), GetInfoLog(), GL_FRAGMENT_SHADER_ARB, glx::glCreateShaderObjectARB, ShaderStatus_OK, and ShaderStatus_OutOfMemory.

Referenced by ShaderManager::buildFragmentShader(), ShaderManager::buildRingsFragmentShader(), CreateFragmentShader(), and CreateProgram().

00221 {
00222     GLint fsid = glx::glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
00223 
00224     GLFragmentShader* shader = new GLFragmentShader(fsid);
00225     if (!shader)
00226         return ShaderStatus_OutOfMemory;
00227 
00228     GLShaderStatus status = shader->compile(source);
00229     if (status != ShaderStatus_OK)
00230     {
00231         if (g_shaderLogFile != NULL)
00232         {
00233             *g_shaderLogFile << "Error compiling fragment shader:\n";
00234             *g_shaderLogFile << GetInfoLog(shader->getID());
00235         }
00236         return status;
00237     }
00238 
00239     *fs = shader;
00240 
00241     return ShaderStatus_OK;
00242 }

GLShaderStatus GLShaderLoader::CreateProgram const std::string vs,
const std::string fs,
GLProgram ** 
[static]
 

Definition at line 324 of file glshader.cpp.

References CreateProgram().

00327 {
00328     vector<string> vsSourceVec;
00329     vsSourceVec.push_back(vsSource);
00330     vector<string> fsSourceVec;
00331     fsSourceVec.push_back(fsSource);
00332 
00333     return CreateProgram(vsSourceVec, fsSourceVec, progOut);
00334 }

GLShaderStatus GLShaderLoader::CreateProgram const std::vector< std::string > &  vs,
const std::vector< std::string > &  fs,
GLProgram ** 
[static]
 

Definition at line 287 of file glshader.cpp.

References CreateFragmentShader(), CreateProgram(), CreateVertexShader(), and ShaderStatus_OK.

00290 {
00291     GLVertexShader* vs = NULL;
00292     GLShaderStatus status = CreateVertexShader(vsSource, &vs);
00293     if (status != ShaderStatus_OK)
00294         return status;
00295 
00296     GLFragmentShader* fs = NULL;
00297     status = CreateFragmentShader(fsSource, &fs);
00298     if (status != ShaderStatus_OK)
00299     {
00300         delete vs;
00301         return status;
00302     }
00303 
00304     GLProgram* prog = NULL;
00305     status = CreateProgram(*vs, *fs, &prog);
00306     if (status != ShaderStatus_OK)
00307     {
00308         delete vs;
00309         delete fs;
00310         return status;
00311     }
00312 
00313     *progOut = prog;
00314 
00315     // No need to keep these around--the program doesn't reference them
00316     delete vs;
00317     delete fs;
00318 
00319     return ShaderStatus_OK;
00320 }

GLShaderStatus GLShaderLoader::CreateProgram const GLVertexShader vs,
const GLFragmentShader fs,
GLProgram ** 
[static]
 

Definition at line 267 of file glshader.cpp.

References GLProgram::attach(), glx::glCreateProgramObjectARB, ShaderStatus_OK, and ShaderStatus_OutOfMemory.

Referenced by ShaderManager::buildProgram(), and CreateProgram().

00270 {
00271     GLint progid = glx::glCreateProgramObjectARB();
00272 
00273     GLProgram* prog = new GLProgram(progid);
00274     if (!prog)
00275         return ShaderStatus_OutOfMemory;
00276 
00277     prog->attach(vs);
00278     prog->attach(fs);
00279 
00280     *progOut = prog;
00281 
00282     return ShaderStatus_OK;
00283 }

GLShaderStatus GLShaderLoader::CreateVertexShader const std::string ,
GLVertexShader ** 
[static]
 

Definition at line 246 of file glshader.cpp.

References CreateVertexShader().

00249 {
00250     vector<string> v;
00251     v.push_back(source);
00252     return CreateVertexShader(v, vs);
00253 }

GLShaderStatus GLShaderLoader::CreateVertexShader const std::vector< std::string > &  ,
GLVertexShader ** 
[static]
 

Definition at line 192 of file glshader.cpp.

References g_shaderLogFile, GLShader::getID(), GetInfoLog(), GL_VERTEX_SHADER_ARB, glx::glCreateShaderObjectARB, ShaderStatus_OK, and ShaderStatus_OutOfMemory.

Referenced by ShaderManager::buildRingsVertexShader(), ShaderManager::buildVertexShader(), CreateProgram(), and CreateVertexShader().

00194 {
00195     GLint vsid = glx::glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
00196 
00197     GLVertexShader* shader = new GLVertexShader(vsid);
00198     if (!shader)
00199         return ShaderStatus_OutOfMemory;
00200 
00201     GLShaderStatus status = shader->compile(source);
00202     if (status != ShaderStatus_OK)
00203     {
00204         if (g_shaderLogFile != NULL)
00205         {
00206             *g_shaderLogFile << "Error compiling vertex shader:\n";
00207             *g_shaderLogFile << GetInfoLog(shader->getID());
00208         }
00209         return status;
00210     }
00211 
00212     *vs = shader;
00213 
00214     return ShaderStatus_OK;
00215 }


The documentation for this class was generated from the following files:
Generated on Sat Jan 14 22:33:21 2006 for Celestia by  doxygen 1.4.1