示例#1
0
        public void Set(Shader shader)
        {
            int usesColourhandle, colourHandle, usesEmissiveHandle, emissiveHandle, usesTransparentHandle, transparentHandle;

            usesColourhandle      = shader.GetUniformLocation("material.usesColour");
            usesEmissiveHandle    = shader.GetUniformLocation("material.usesEmissiveColour");
            usesTransparentHandle = shader.GetUniformLocation("material.usesTransparentColour");
            if (this.usesColour == true)
            {
                colourHandle = shader.GetUniformLocation("material.colour");
                GL.Uniform1(usesColourhandle, 1);
                GL.Uniform4(colourHandle, ref colour);
            }
            else
            {
                GL.Uniform1(usesColourhandle, 0);
            }
            if (this.usesEmissiveColour == true)
            {
                emissiveHandle = shader.GetUniformLocation("material.emissiveColour");
                GL.Uniform1(usesEmissiveHandle, 1);
                GL.Uniform3(emissiveHandle, ref emissiveColour);
            }
            else
            {
                GL.Uniform1(usesEmissiveHandle, 0);
            }
            if (this.usesTransparentTextures == true)
            {
                transparentHandle = shader.GetUniformLocation("material.transparentColour");
                GL.Uniform1(usesTransparentHandle, 1);
                GL.Uniform3(transparentHandle, ref transparentColour);
            }
            else
            {
                GL.Uniform1(usesTransparentHandle, 0);
            }
            // set up texture if needed
            if (textureIndex == -1)
            {
                return;
            }
            Texture texture = TextureManager.Instance.GetTexture(textureIndex);

            texture.ActivateTexture(TextureUnit.Texture0, shader, "material.texture", 0);
        }