public static void BoolToIntShaderUniform(Shader shader, bool value, string name) { // Else if is faster than ternary operator. if (value) { GL.Uniform1(shader.GetVertexAttributeUniformLocation(name), 1); } else { GL.Uniform1(shader.GetVertexAttributeUniformLocation(name), 0); } }
private static void SetVertexAttributes(Shader shader) { // Set the nud vertex attributes. GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vPosition"), 3, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 0); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vNormal"), 3, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 12); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vTangent"), 3, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 24); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vBiTangent"), 3, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 36); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vUV"), 2, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 48); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vColor"), 4, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 56); GL.VertexAttribIPointer(shader.GetVertexAttributeUniformLocation("vBone"), 4, VertexAttribIntegerType.Int, NUD.DisplayVertex.Size, new IntPtr(72)); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vWeight"), 4, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 88); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vUV2"), 2, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 104); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("vUV3"), 2, VertexAttribPointerType.Float, false, NUD.DisplayVertex.Size, 112); }
public static void DrawScreenTriangle(Shader shader, BufferObject vbo) { shader.EnableVertexAttributes(); vbo.Bind(); // Set everytime because multiple shaders use this for drawing. GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("position"), 3, VertexAttribPointerType.Float, false, sizeof(float) * 3, 0); GL.DrawArrays(PrimitiveType.Triangles, 0, 3); shader.DisableVertexAttributes(); }
public static void SystemColorVector3Uniform(Shader shader, System.Drawing.Color color, string name) { GL.Uniform3(shader.GetVertexAttributeUniformLocation(name), ColorTools.Vector4FromColor(color).Xyz); }
public static void LightColorVector3Uniform(Shader shader, LightColor color, string name) { GL.Uniform3(shader.GetVertexAttributeUniformLocation(name), color.R, color.G, color.B); }
private void SetVertexAttributes(Shader shader) { shader.UseProgram(); GL.VertexAttribPointer(shader.GetVertexAttributeUniformLocation("position"), 3, VertexAttribPointerType.Float, false, sizeof(float) * 3, 0); }