void GLGeometryShader::compileGeometryShaderFromString(const char* shaderSource)
	{
	if(programObject!=0)
		Misc::throwStdErr("GLGeometryShader::compileGeometryShaderFromString: Attempt to compile after linking");
	
	GLhandleARB geometryShaderObject=0;
	try
		{
		/* Create a new geometry shader: */
		geometryShaderObject=glCreateShaderObjectARB(GL_GEOMETRY_SHADER_EXT);
		
		/* Compile the shader source code: */
		glCompileShaderFromString(geometryShaderObject,shaderSource);
		
		/* Store the shader for linking: */
		geometryShaderObjects.push_back(geometryShaderObject);
		}
	catch(std::runtime_error)
		{
		/* Delete the geometry shader: */
		if(geometryShaderObject!=0)
			glDeleteObjectARB(geometryShaderObject);
		
		throw;
		}
	}
Ejemplo n.º 2
0
void GLShader::compileVertexShaderFromString(const char* shaderSource)
	{
	if(programObject!=0)
		Misc::throwStdErr("GLShader::compileVertexShaderFromString: Attempt to compile after linking");
	
	GLhandleARB vertexShaderObject=0;
	try
		{
		/* Create a new vertex shader: */
		vertexShaderObject=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
		
		/* Compile the shader source code: */
		glCompileShaderFromString(vertexShaderObject,shaderSource);
		
		/* Store the shader for linking: */
		vertexShaderObjects.push_back(vertexShaderObject);
		}
	catch(std::runtime_error)
		{
		/* Delete the vertex shader: */
		if(vertexShaderObject!=0)
			glDeleteObjectARB(vertexShaderObject);
		
		throw;
		}
	}
Ejemplo n.º 3
0
void GLShader::compileFragmentShaderFromString(const char* shaderSource)
	{
	if(programObject!=0)
		Misc::throwStdErr("GLShader::compileFragmentShaderFromString: Attempt to compile after linking");
	
	GLhandleARB fragmentShaderObject=0;
	try
		{
		/* Create a new fragment shader: */
		fragmentShaderObject=glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
		
		/* Compile the shader source code: */
		glCompileShaderFromString(fragmentShaderObject,shaderSource);
		
		/* Store the shader for linking: */
		fragmentShaderObjects.push_back(fragmentShaderObject);
		}
	catch(std::runtime_error)
		{
		/* Delete the fragment shader: */
		if(fragmentShaderObject!=0)
			glDeleteObjectARB(fragmentShaderObject);
		
		throw;
		}
	}
GLhandleARB glCompileARBGeometryShader4FromString(const char* shaderSource)
	{
	/* Create a new geometry shader: */
	GLhandleARB geometryShaderObject=glCreateShaderObjectARB(GL_GEOMETRY_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromString(geometryShaderObject,shaderSource);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(geometryShaderObject);
		throw;
		}
	
	return geometryShaderObject;
	}
Ejemplo n.º 5
0
GLhandleARB glCompileVertexShaderFromString(const char* shaderSource)
	{
	/* Create a new vertex shader: */
	GLhandleARB vertexShaderObject=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromString(vertexShaderObject,shaderSource);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(vertexShaderObject);
		
		throw;
		}
	
	return vertexShaderObject;
	}
GLhandleARB glCompileFragmentShaderFromString(const char* shaderSource)
	{
	/* Create a new vertex shader: */
	GLhandleARB fragmentShaderObject=glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
	
	try
		{
		/* Load and compile the shader source: */
		glCompileShaderFromString(fragmentShaderObject,shaderSource);
		}
	catch(std::runtime_error err)
		{
		/* Clean up and re-throw the exception: */
		glDeleteObjectARB(fragmentShaderObject);
		
		throw;
		}
	
	return fragmentShaderObject;
	}