void GLGeometryShader::compileGeometryShader(const char* shaderSourceFileName)
	{
	if(programObject!=0)
		Misc::throwStdErr("GLGeometryShader::compileGeometryShader: Attempt to compile after linking");
	
	GLhandleARB geometryShaderObject=0;
	try
		{
		/* Create a new geometry shader: */
		geometryShaderObject=glCreateShaderObjectARB(GL_GEOMETRY_SHADER_EXT);
		
		/* Load and compile the shader source code: */
		glCompileShaderFromFile(geometryShaderObject,shaderSourceFileName);
		
		/* Store the shader for linking: */
		geometryShaderObjects.push_back(geometryShaderObject);
		}
	catch(std::runtime_error)
		{
		/* Delete the geometry shader: */
		if(geometryShaderObject!=0)
			glDeleteObjectARB(geometryShaderObject);
		
		throw;
		}
	}
示例#2
0
void GLShader::compileVertexShader(const char* shaderSourceFileName)
	{
	if(programObject!=0)
		Misc::throwStdErr("GLShader::compileVertexShader: Attempt to compile after linking");
	
	GLhandleARB vertexShaderObject=0;
	try
		{
		/* Create a new vertex shader: */
		vertexShaderObject=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
		
		/* Load and compile the shader source code: */
		glCompileShaderFromFile(vertexShaderObject,shaderSourceFileName);
		
		/* Store the shader for linking: */
		vertexShaderObjects.push_back(vertexShaderObject);
		}
	catch(std::runtime_error)
		{
		/* Delete the vertex shader: */
		if(vertexShaderObject!=0)
			glDeleteObjectARB(vertexShaderObject);
		
		throw;
		}
	}
示例#3
0
void glCompileShaderFromFile(GLhandleARB shaderObject,const char* shaderSourceFileName)
	{
	/* Open the source file: */
	IO::FilePtr shaderSourceFile(IO::openFile(shaderSourceFileName));
	
	/* Compile the shader from the source file: */
	glCompileShaderFromFile(shaderObject,shaderSourceFileName,*shaderSourceFile);
	}
示例#4
0
GLhandleARB glCompileVertexShaderFromFile(const char* shaderSourceFileName,IO::File& shaderSourceFile)
	{
	/* Create a new vertex shader: */
	GLhandleARB vertexShaderObject=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromFile(vertexShaderObject,shaderSourceFileName,shaderSourceFile);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(vertexShaderObject);
		throw;
		}
	
	return vertexShaderObject;
	}
GLhandleARB glCompileARBGeometryShader4FromFile(const char* shaderSourceFileName)
	{
	/* Create a new vertex shader: */
	GLhandleARB geometryShaderObject=glCreateShaderObjectARB(GL_GEOMETRY_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromFile(geometryShaderObject,shaderSourceFileName);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(geometryShaderObject);
		throw;
		}
	
	return geometryShaderObject;
	}
GLhandleARB glCompileFragmentShaderFromFile(const char* shaderSourceFileName)
	{
	/* Create a new vertex shader: */
	GLhandleARB fragmentShaderObject=glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromFile(fragmentShaderObject,shaderSourceFileName);
		}
	catch(std::runtime_error err)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(fragmentShaderObject);
		
		throw;
		}
	
	return fragmentShaderObject;
	}