Beispiel #1
0
 public Shader(string source, OpenTK.Graphics.OpenGL.ShaderType type)
 {
     this.Pointer = GL.CreateShader(type);
     GL.ShaderSource(Pointer, source);
     GL.CompileShader(Pointer);
     InfoLog = GL.GetShaderInfoLog(Pointer);
 }
Beispiel #2
0
        private static int LoadShader(string code, OpenTK.Graphics.OpenGL.ShaderType type)
        {
            int id = GL.CreateShader(type);

            GL.ShaderSource(id, code);
            GL.CompileShader(id);
            return(id);
        }
Beispiel #3
0
        public OpenGLShader(Stream dataStream, OpenTK.Graphics.OpenGL.ShaderType type)
        {
            Type = OpenGLFormats.GLToVeldridShaderType(type);
            string source;

            using (var sr = new StreamReader(dataStream))
            {
                source = sr.ReadToEnd();
            }

            LoadShader(source, type);
        }
Beispiel #4
0
        private void LoadShader(string source, OpenTK.Graphics.OpenGL.ShaderType type)
        {
            ShaderID = GL.CreateShader(type);
            GL.ShaderSource(ShaderID, source);
            GL.CompileShader(ShaderID);
            int compileStatus;

            GL.GetShader(ShaderID, ShaderParameter.CompileStatus, out compileStatus);
            if (compileStatus != 1)
            {
                string shaderLog = GL.GetShaderInfoLog(ShaderID);
                throw new InvalidOperationException($"Error compiling {type} shader. {shaderLog}");
            }
        }
        public Shader(string source, OpenTK.Graphics.OpenGL.ShaderType type)
        {
            this.Pointer = GL.CreateShader(type);
            source      += "\0";
            GL.ShaderSource(Pointer, source);
            GL.CompileShader(Pointer);
            int status = 0;

            GL.GetShader(Pointer, ShaderParameter.CompileStatus, out status);
            string infolog = GL.GetShaderInfoLog(Pointer);

            if (!string.IsNullOrWhiteSpace(infolog))
            {
                Console.WriteLine(infolog);
            }
        }
Beispiel #6
0
        public static ShaderType GLToVeldridShaderType(OpenTK.Graphics.OpenGL.ShaderType type)
        {
            switch (type)
            {
            case OpenTK.Graphics.OpenGL.ShaderType.FragmentShader:
                return(ShaderType.Fragment);

            case OpenTK.Graphics.OpenGL.ShaderType.VertexShader:
                return(ShaderType.Vertex);

            case OpenTK.Graphics.OpenGL.ShaderType.GeometryShader:
                return(ShaderType.Geometry);

            case OpenTK.Graphics.OpenGL.ShaderType.TessEvaluationShader:
            case OpenTK.Graphics.OpenGL.ShaderType.TessControlShader:
            case OpenTK.Graphics.OpenGL.ShaderType.ComputeShader:
                throw new NotSupportedException($"The shader type {type} is not supported.");

            default:
                throw Illegal.Value <OpenTK.Graphics.OpenGL.ShaderType>();
            }
        }
Beispiel #7
0
        public void LoadShaderFromString(string code, string shaderName, IeCoreEntites.Shaders.ShaderType type)
        {
            Shader shader = new Shader(shaderName, string.Concat("InMemmory shader ", Guid.NewGuid()), code, type);

            _assetmanager.Register(shader);
            _storedShaders.Add(shader);

            OpenTK.Graphics.OpenGL.ShaderType OGLEnum = Enum.Parse <OpenTK.Graphics.OpenGL.ShaderType>(shader.ShaderType.ToString());

            shader.Id = GL.CreateShader(OGLEnum);
            GL.ShaderSource(shader.Id, shader.ShaderCode);
            GL.CompileShader(shader.Id);

            string shaderInfo = GL.GetShaderInfoLog(shader.Id);

            if (!string.IsNullOrEmpty(shaderInfo))
            {
                Console.WriteLine(shaderInfo); //Log errors.
            }
            else
            {
                Console.WriteLine($"{shaderName} compiled correctly");
            }
        }
Beispiel #8
0
 public OpenGLShader(string source, OpenTK.Graphics.OpenGL.ShaderType type)
 {
     LoadShader(source, type);
 }