Files
questshock/modding/hacked/ui/opengl/Program.go
T

36 lines
1.1 KiB
Go

package opengl
// LinkNewProgram creates a new shader program based on the provided shaders.
func LinkNewProgram(gl OpenGL, shaders ...uint32) (program uint32, err error) {
program = gl.CreateProgram()
for _, shader := range shaders {
gl.AttachShader(program, shader)
}
gl.LinkProgram(program)
if gl.GetProgramParameter(program, LINK_STATUS) == 0 {
err = ShaderError{Log: gl.GetProgramInfoLog(program)}
gl.DeleteProgram(program)
program = 0
}
return
}
// LinkNewStandardProgram creates a new shader based on two shader sources.
func LinkNewStandardProgram(gl OpenGL, vertexShaderSource, fragmentShaderSource string) (program uint32, err error) {
vertexShader, vertexErr := CompileNewShader(gl, VERTEX_SHADER, vertexShaderSource)
if vertexErr != nil {
return 0, NamedShaderError{Name: "vertexShader", Nested: vertexErr}
}
defer gl.DeleteShader(vertexShader)
fragmentShader, fragmentErr := CompileNewShader(gl, FRAGMENT_SHADER, fragmentShaderSource)
if fragmentErr != nil {
return 0, NamedShaderError{Name: "fragmentShader", Nested: fragmentErr}
}
defer gl.DeleteShader(fragmentShader)
return LinkNewProgram(gl, vertexShader, fragmentShader)
}