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