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); }
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; }
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); }
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(); } }