'Main program
Dim vertex_shader_object As Integer ' = CreateShader(OpenGL.ShaderType.VertexShader)
Dim fragment_shader_object As Integer ' = CreateShader(OpenGL.ShaderType.FragmentShader)
Dim Shader_Program As Integer = CreateProgram() '' end shader declarations
Dim vs As New System.IO.StreamReader("Simple_VS.glsl")
Dim fs As New System.IO.StreamReader("Simple1_FS.glsl")
CreateShaders(vs.ReadToEnd, fs.ReadToEnd, vertex_shader_object, fragment_shader_object, Shader_Program)
Public Shared Sub CreateShaders(ByVal vs As String, ByVal fs As String, ByRef vertexObject As Integer, ByRef fragmentObject As Integer, ByRef program As Integer)
Dim StatusCode As Integer
Dim Info As String = Nothing
vertexObject = GL.CreateShader(ShaderType.VertexShader)
fragmentObject = GL.CreateShader(ShaderType.FragmentShader)
GL.ShaderSource(vertexObject, vs)
GL.CompileShader(vertexObject)
GL.GetShaderInfoLog(vertexObject, Info)
GL.GetShader(vertexObject, ShaderParameter.CompileStatus, StatusCode)
If StatusCode <> 1 Then
MsgBox(Info)
End If
GL.ShaderSource(fragmentObject, fs)
GL.CompileShader(fragmentObject)
GL.GetShaderInfoLog(fragmentObject, Info)
GL.GetShader(fragmentObject, ShaderParameter.CompileStatus, StatusCode)
If StatusCode <> 1 Then
MsgBox(Info)
End If
program = GL.CreateProgram
GL.AttachShader(program, fragmentObject)
GL.AttachShader(program, vertexObject)
GL.LinkProgram(program)
GL.UseProgram(program)
End Sub
|