public void TestDefaultPrecision(ShaderPrecisionContext ctx) { if (!HasVersion(2, 0) && !IsGlExtensionSupported("GL_ARB_vertex_shader")) { Assert.Inconclusive("OpenGL 2.0 or GL_ARB_vertex_shader not supported"); } if (!HasVersion(3, 0) && !IsGlExtensionSupported("GL_EXT_transform_feedback")) { Assert.Inconclusive("OpenGL 3.0 or GL_EXT_transform_feedback not supported"); } // Create resources required for test ctx.CreateResources(); // Set program input BindShaderProgramAttrib(ctx.Program, ctx.ProgramInput, "vertexIn"); // Set program output Gl.BindBuffer(BufferTargetARB.TransformFeedbackBuffer, ctx.ProgramOutput); // Draw on feedback buffer using program Gl.UseProgram(ctx.Program); // Transform feedback Gl.BeginTransformFeedback(Gl.POINTS); Gl.DrawArrays(PrimitiveType.Points, 0, ctx.ReferenceOutput.Length); Gl.EndTransformFeedback(); // Get program computation result float[] feedbackData = new float[ctx.ReferenceOutput.Length]; Gl.GetBufferSubData(BufferTargetARB.TransformFeedbackBuffer, IntPtr.Zero, (uint)feedbackData.Length, feedbackData); // Check precision }
public void TestDefaultPrecision(ShaderPrecisionContext ctx) { if (!HasVersion(2, 0) && !IsGlExtensionSupported("GL_ARB_vertex_shader")) Assert.Inconclusive("OpenGL 2.0 or GL_ARB_vertex_shader not supported"); if (!HasVersion(3, 0) && !IsGlExtensionSupported("GL_EXT_transform_feedback")) Assert.Inconclusive("OpenGL 3.0 or GL_EXT_transform_feedback not supported"); // Create resources required for test ctx.CreateResources(); // Set program input BindShaderProgramAttrib(ctx.Program, ctx.ProgramInput, "vertexIn"); // Set program output Gl.BindBuffer(BufferTargetARB.TransformFeedbackBuffer, ctx.ProgramOutput); // Draw on feedback buffer using program Gl.UseProgram(ctx.Program); // Transform feedback Gl.BeginTransformFeedback(Gl.POINTS); Gl.DrawArrays(PrimitiveType.Points, 0, ctx.ReferenceOutput.Length); Gl.EndTransformFeedback(); // Get program computation result float[] feedbackData = new float[ctx.ReferenceOutput.Length]; Gl.GetBufferSubData(BufferTargetARB.TransformFeedbackBuffer, IntPtr.Zero, (uint)feedbackData.Length, feedbackData); // Check precision }