예제 #1
0
        private void LoadShaders(string vertex, string fragment, ShaderLoad shaderLoad = ShaderLoad.Path)
        {
            string vertexSource;
            string fragmentSource;

            if (shaderLoad == ShaderLoad.Path) {
                vertexSource = IO.LoadAsciiContent(vertex);
                fragmentSource = IO.LoadAsciiContent(fragment);
            } else {
                vertexSource = vertex;
                fragmentSource = fragment;
            }

            int vertexShader = GL.CreateShader(ShaderType.VertexShader);
            GL.ShaderSource(vertexShader, vertexSource);
            GL.CompileShader(vertexShader);

            int fragmentShader = GL.CreateShader(ShaderType.FragmentShader);
            GL.ShaderSource(fragmentShader, fragmentSource);
            GL.CompileShader(fragmentShader);

            Program = GL.CreateProgram();
            GL.AttachShader(Program, vertexShader);
            GL.AttachShader(Program, fragmentShader);

            GL.LinkProgram(Program);

            GL.DeleteShader(vertexShader);
            GL.DeleteShader(fragmentShader);
        }
예제 #2
0
 public Shader(string vertex, string fragment, ShaderLoad shaderLoad = ShaderLoad.Path)
 {
     LoadShaders(vertex, fragment, shaderLoad);
 }