Пример #1
0
void glCompileShaderFromStrings(GLhandleARB shaderObject,size_t numShaderSources,...)
	{
	/* Create an argument list and call the actual function: */
	va_list ap;
	try
		{
		va_start(ap,numShaderSources);
		glCompileShaderFromStrings(shaderObject,numShaderSources,ap);
		va_end(ap);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		va_end(ap);
		throw;
		}
	}
Пример #2
0
GLhandleARB glCompileVertexShaderFromStrings(size_t numShaderSources,...)
	{
	/* Create a new vertex shader: */
	GLhandleARB vertexShaderObject=glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB);
	
	va_list ap;
	try
		{
		va_start(ap,numShaderSources);
		glCompileShaderFromStrings(vertexShaderObject,numShaderSources,ap);
		va_end(ap);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		va_end(ap);
		glDeleteObjectARB(vertexShaderObject);
		throw;
		}
	
	return vertexShaderObject;
	}
GLhandleARB glCompileARBGeometryShader4FromStrings(size_t numShaderSources,...)
	{
	/* Create a new geometry shader: */
	GLhandleARB geometryShaderObject=glCreateShaderObjectARB(GL_GEOMETRY_SHADER_ARB);
	
	va_list ap;
	try
		{
		va_start(ap,numShaderSources);
		glCompileShaderFromStrings(geometryShaderObject,numShaderSources,ap);
		va_end(ap);
		}
	catch(...)
		{
		/* Clean up and re-throw the exception: */
		va_end(ap);
		glDeleteObjectARB(geometryShaderObject);
		throw;
		}
	
	return geometryShaderObject;
	}