66using System . Linq ;
77using System . Text ;
88using System . Threading . Tasks ;
9+ using FreeFrame . Shaders ;
910
1011namespace FreeFrame
1112{
@@ -14,7 +15,7 @@ class Window : GameWindow
1415 int _vertexBuffer ;
1516 int _vertexArray ;
1617 int _indexBuffer ;
17- int _shader ;
18+ Shader _shader ;
1819
1920 public readonly float [ ] _vertices =
2021 {
@@ -31,45 +32,7 @@ class Window : GameWindow
3132 } ;
3233
3334 public Window ( GameWindowSettings gameWindowSettings , NativeWindowSettings nativeWindowSettings ) : base ( gameWindowSettings , nativeWindowSettings ) { }
34-
35- static int CompileShader ( string uri , ShaderType type )
36- {
37- int shader = GL . CreateShader ( type ) ;
38-
39- GL . ShaderSource ( shader , File . ReadAllText ( uri ) ) ; // Import the source code of the shader
40- GL . CompileShader ( shader ) ;
41-
42- GL . GetShader ( shader , ShaderParameter . CompileStatus , out int compileStatus ) ; // compileStatus is 0 if compile error
43- if ( compileStatus == 0 )
44- {
45- Console . WriteLine ( "{0}: {1}" , type . ToString ( ) , GL . GetShaderInfoLog ( shader ) ) ;
46- throw new Exception ( ) ; // TODO: Remove this exception
47- }
48-
49- return shader ;
50- }
51-
52- static int CreateShader ( string uriVertexShader , string uriFragementShader )
53- {
54- int program = GL . CreateProgram ( ) ;
55-
56- int vertexShader = CompileShader ( uriVertexShader , ShaderType . VertexShader ) ;
57- int fragmentShader = CompileShader ( uriFragementShader , ShaderType . FragmentShader ) ;
58-
59- // TODO: Handling error
60-
61- GL . AttachShader ( program , vertexShader ) ;
62- GL . AttachShader ( program , fragmentShader ) ;
6335
64- GL . LinkProgram ( program ) ; // Put the shaders in their respective processor
65- GL . ValidateProgram ( program ) ; // Check if everything correct and store the information on the logs
66- // TODO: Explain what's the difference with GL.ShaderInfoLog
67-
68- GL . DeleteShader ( vertexShader ) ;
69- GL . DeleteShader ( fragmentShader ) ;
70-
71- return program ;
72- }
7336 protected override void OnLoad ( )
7437 {
7538 base . OnLoad ( ) ;
@@ -94,8 +57,8 @@ protected override void OnLoad()
9457 GL . BufferData ( BufferTarget . ElementArrayBuffer , _indices . Length * sizeof ( uint ) , _indices , BufferUsageHint . StaticDraw ) ;
9558
9659 // Shaders
97- _shader = CreateShader ( "Shaders/shader.vert" , "Shaders/shader.frag" ) ;
98- GL . UseProgram ( _shader ) ;
60+ _shader = new Shader ( "Shaders/shader.vert" , "Shaders/shader.frag" ) ;
61+ _shader . Use ( ) ;
9962 }
10063 protected override void OnResize ( ResizeEventArgs e )
10164 {
@@ -120,7 +83,7 @@ protected override void OnRenderFrame(FrameEventArgs e)
12083
12184 GL . Clear ( ClearBufferMask . ColorBufferBit ) ; // Clear the color
12285
123- //GL.UseProgram(_shader );
86+ //_shader.Use( );
12487 //GL.BindVertexArray(_vertexArray);
12588
12689 GL . DrawElements ( PrimitiveType . Triangles , _indices . Length , DrawElementsType . UnsignedInt , 0 ) ;
@@ -137,7 +100,6 @@ protected override void OnUnload()
137100 GL . BindVertexArray ( 0 ) ;
138101 GL . UseProgram ( 0 ) ;
139102
140- GL . DeleteProgram ( _shader ) ;
141103 GL . DeleteBuffer ( _vertexBuffer ) ;
142104 GL . DeleteBuffer ( _indexBuffer ) ;
143105 GL . DeleteVertexArray ( _vertexArray ) ;
0 commit comments