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; } }
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; } }
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; }
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; }