Example #1
0
        public void Draw(GLShaderProgram shaderProgram)
        {
            shaderProgram.SetUniform("hasNormal", NormalBuffer != null);
            shaderProgram.SetUniform("hasTexCoord", TexCoordBuffer != null);
            shaderProgram.SetUniform("hasTexCoord2", TexCoord2Buffer != null);
            shaderProgram.SetUniform("hasColor", ColorBuffer != null);
            shaderProgram.SetUniform("hasTangent", TangentBuffer != null);

            GL.BindVertexArray(VertexArrayID);

            foreach (var indexTable in IndexTables)
            {
                indexTable.Draw(shaderProgram);
            }
        }
Example #2
0
        public void Draw(GLShaderProgram shaderProgram)
        {
            shaderProgram.SetUniform("uHasNormal", NormalBuffer != null);
            shaderProgram.SetUniform("uHasTexCoord0", TexCoord0Buffer != null);
            shaderProgram.SetUniform("uHasTexCoord1", TexCoord1Buffer != null);
            shaderProgram.SetUniform("uHasColor0", Color0Buffer != null);
            shaderProgram.SetUniform("uHasTangent", TangentBuffer != null);

            GL.BindVertexArray(VertexArrayId);

            foreach (var subMesh in SubMeshes)
            {
                subMesh.Draw(shaderProgram);
            }
        }
        public void Bind(GLShaderProgram shaderProgram)
        {
            shaderProgram.SetUniform("diffuseColor", DiffuseColor);
            shaderProgram.SetUniform("ambientColor", AmbientColor);
            shaderProgram.SetUniform("specularColor", SpecularColor);
            //shaderProgram.SetUniform( "emissionColor", EmissionColor );
            shaderProgram.SetUniform("specularPower", Shininess);

            int textureIndex = 0;

            void ActivateTexture(GLTexture texture, string uniformName, TextureTarget target = TextureTarget.Texture2D)
            {
                GL.ActiveTexture(TextureUnit.Texture0 + textureIndex);
                GL.BindTexture(target, texture?.Id ?? 0);
                shaderProgram.SetUniform($"has{uniformName}", texture != null);
                shaderProgram.SetUniform(uniformName, textureIndex++);
            }

            ActivateTexture(Diffuse, "diffuseTexture");
            ActivateTexture(Ambient, "ambientTexture");
            ActivateTexture(Normal, "normalTexture");
            ActivateTexture(Specular, "specularTexture");
            ActivateTexture(Reflection, "reflectionTexture", TextureTarget.TextureCubeMap);
            ActivateTexture(SpecularPower, "specularPowerTexture");
        }
Example #4
0
        public void Bind(GLShaderProgram shaderProgram)
        {
            shaderProgram.SetUniform("uDiffuseColor", DiffuseColor);
            shaderProgram.SetUniform("uSpecularColor", SpecularColor);
            shaderProgram.SetUniform("uSpecularPower", Shininess);
            shaderProgram.SetUniform("uUseAniso", UseAniso);

            int textureIndex = 0;

            void ActivateTexture(GLTexture texture, string uniformName,
                                 TextureTarget target = TextureTarget.Texture2D)
            {
                GL.ActiveTexture(TextureUnit.Texture0 + textureIndex);
                GL.BindTexture(target, texture?.Id ?? 0);
                shaderProgram.SetUniform($"uHas{uniformName}", texture != null);
                shaderProgram.SetUniform($"u{uniformName}", textureIndex++);
            }

            ActivateTexture(Diffuse, "DiffuseTexture");
            ActivateTexture(Ambient, "AmbientTexture");
            ActivateTexture(Normal, "NormalTexture");
            ActivateTexture(Specular, "SpecularTexture");
            ActivateTexture(Reflection, "ReflectionTexture", TextureTarget.TextureCubeMap);
            ActivateTexture(Tangent, "TangentTexture");
        }