public void TestUniform4ui() { if (!HasVersion(3, 0) && !HasEsVersion(3, 0) && !IsGlExtensionSupported("GL_EXT_gpu_shader4")) { Assert.Inconclusive("required features not implemented"); } using (Device device = new Device()) using (new GLContext(device)) { uint program = CreateProgramUniform4ui(); try { Vertex4ui uniformStruct; uint[] uniformValue; int uniformLoc = Gl.GetUniformLocation(program, "uVec"); if (uniformLoc < 0) { throw new InvalidOperationException("no uniform variable"); } // glGetUniformuiv uniformValue = Array4(1u); Gl.GetUniform(program, uniformLoc, uniformValue); CollectionAssert.AreEqual(Array4(0u), uniformValue); // glGetUniformuiv (ref) uniformStruct = new Vertex4ui(1u); Gl.GetUniformui(program, uniformLoc, ref uniformStruct); Assert.AreEqual(Vertex4ui.Zero, uniformStruct); // glUniform4ui uniformValue = Array4(0u); Gl.Uniform4(uniformLoc, Array4(1u)); Gl.GetUniform(program, uniformLoc, uniformValue); CollectionAssert.AreEqual(Array4(1u), uniformValue); // glUniform4uiv uniformValue = Array4(0u); Gl.Uniform4(uniformLoc, Array4(9u)); Gl.GetUniform(program, uniformLoc, uniformValue); CollectionAssert.AreEqual(Array4(9u), uniformValue); // glUniform4uiv (ref) uniformValue = Array4(0u); uniformStruct = new Vertex4ui(5u); Gl.Uniform4ui(uniformLoc, 1, ref uniformStruct); Gl.GetUniform(program, uniformLoc, uniformValue); CollectionAssert.AreEqual(Array4(5u), uniformValue); } finally { Gl.DeleteProgram(program); } } }
void IShaderUniformContainer.SetUniform(GraphicsContext ctx, string uniformName, Vertex4ui v) { throw new NotImplementedException(); }