Пример #1
0
        public void TestUniform3i()
        {
            if (!HasVersion(2, 0) && !HasEsVersion(2, 0) && !IsGlExtensionSupported("GL_ARB_shader_objects"))
            {
                Assert.Inconclusive("required features not implemented");
            }

            using (Device device = new Device())
                using (new GLContext(device))
                {
                    uint program = CreateProgramUniform3i();

                    try {
                        Vertex3i uniformStruct;
                        int[]    uniformValue;

                        int uniformLoc = Gl.GetUniformLocation(program, "uVec");
                        if (uniformLoc < 0)
                        {
                            throw new InvalidOperationException("no uniform variable");
                        }

                        // glGetUniformiv
                        uniformValue = Array3(1);
                        Gl.GetUniform(program, uniformLoc, uniformValue);
                        CollectionAssert.AreEqual(Array3(0), uniformValue);

                        // glGetUniformiv (ref)
                        uniformStruct = new Vertex3i(1);
                        Gl.GetUniformi(program, uniformLoc, ref uniformStruct);
                        Assert.AreEqual(Vertex3i.Zero, uniformStruct);

                        // glUniform3i
                        uniformValue = Array3(0);
                        Gl.Uniform3(uniformLoc, Array3(1));
                        Gl.GetUniform(program, uniformLoc, uniformValue);
                        CollectionAssert.AreEqual(Array3(1), uniformValue);

                        // glUniform3iv
                        uniformValue = Array3(0);
                        Gl.Uniform3(uniformLoc, Array3(9));
                        Gl.GetUniform(program, uniformLoc, uniformValue);
                        CollectionAssert.AreEqual(Array3(9), uniformValue);

                        // glUniform3iv (ref)
                        uniformValue  = Array3(0);
                        uniformStruct = new Vertex3i(5);
                        Gl.Uniform3i(uniformLoc, 1, ref uniformStruct);
                        Gl.GetUniform(program, uniformLoc, uniformValue);
                        CollectionAssert.AreEqual(Array3(5), uniformValue);
                    } finally {
                        Gl.DeleteProgram(program);
                    }
                }
        }
Пример #2
0
 void IShaderUniformContainer.SetUniform(GraphicsContext ctx, string uniformName, Vertex3i v)
 {
     throw new NotImplementedException();
 }
		/// <summary>
		/// Set uniform state variable (ivec3 variable or bvec3 variable).
		/// </summary>
		/// <param name="ctx">
		/// A <see cref="GraphicsContext"/> used for operations.
		/// </param>
		/// <param name="uniformName">
		/// A <see cref="String"/> that specify the variable name in the shader source.
		/// </param>
		/// <param name="v">
		/// A <see cref="Vertex3i"/> holding the uniform variabile data (first component).
		/// </param>
		public void SetUniform(GraphicsContext ctx, string uniformName, Vertex3i v)
		{
			SetUniform(ctx, uniformName, v.x, v.y, v.z);
		}