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