Beispiel #1
0
    public void LoadShader(string filename, int program, out int address)
    {
        address = -1;
        ShaderType type;

        switch (Path.GetExtension(filename))
        {
        case ".vert":
        {
            type = ShaderType.VertexShader;
        }; break;

        case ".frag":
        {
            type = ShaderType.FragmentShader;
        }; break;

        default:
        {
            Status = ShaderStatus.UnknownShaderFileType;
            return;
        };
        }

        LoadShader(filename, type, program, out address);
    }
Beispiel #2
0
    public void LoadShader(string filename, ShaderType type, int program, out int address)
    {
        address = GL.CreateShader(type);

        StreamReader Reader = new StreamReader(filename);

        GL.ShaderSource(address, Reader.ReadToEnd());

        GL.CompileShader(address);
        GL.AttachShader(program, address);

        Console.WriteLine(GL.GetShaderInfoLog(address));

        Reader.Close();

        Status = ShaderStatus.OK;
    }
Beispiel #3
0
        private void GetShaderiv(uint name, ShaderStatus pname, int[] pValues)
        {
            if (name == 0)
            {
                SetLastError(ErrorCode.InvalidValue); return;
            }
            if (!this.nameShaderDict.ContainsKey(name))
            {
                SetLastError(ErrorCode.InvalidOperation); return;
            }
            if (!Enum.IsDefined(typeof(ShaderStatus), pname))
            {
                SetLastError(ErrorCode.InvalidEnum); return;
            }

            Shader shader = this.nameShaderDict[name];

            shader.GetShaderStatus(pname, pValues);
        }
Beispiel #4
0
        public void GetShaderStatus(ShaderStatus pname, int[] pValues)
        {
            if (pValues == null || pValues.Length < 1)
            {
                return;
            }

            switch (pname)
            {
            case ShaderStatus.ShaderType:
                pValues[0] = (int)this.ShaderType;
                break;

            case ShaderStatus.DeleteStatus:
                throw new NotImplementedException();

            case ShaderStatus.CompileStatus:
                pValues[0] = this.infoLog.Length == 0 ? (int)GL.GL_TRUE : (int)GL.GL_FALSE;
                break;

            case ShaderStatus.InfoLogLength:
                pValues[0] = this.infoLog.Length;
                break;

            case ShaderStatus.ShaderSourceLength:
                string code = this.Code;
                if (code == null)
                {
                    pValues[0] = 0;
                }
                else
                {
                    pValues[0] = code.Length;
                }
                break;

            default:
                throw new NotImplementedException();
            }
        }