-VertexShader:
int vertexShader = LoadShader(En el que hemos añadido una linea que le asigna la coordenada de la textura a una variable que usaremos luego en el FragmentShader.
@"
void main()
{
gl_FrontColor = gl_Color;
gl_Position = ftransform();
gl_TexCoord[0]=gl_MultiTexCoord0;
}", ShaderType.VertexShader);
-FragmentShader:
@"En el que usamos la función texture2D para obtener el color de la textura correspondiente. Podemos observar dos cosas, por una parte el uso de '.st' que no es más que otro de los sistemas de coordenadas que podemos usar. Y el uso de la variable MyTexture a la que vamos a asignar la textura mediante el uso de la función BindTexture():
uniform sampler2D MyTexture;
void main()
{
gl_FragColor = texture2D(MyTexture, gl_TexCoord[0].st);
}"
private void BindTexture(ref int textureId, TextureUnit textureUnit, string UniformName, int shaderProgram)Esta función la usaremos después de cargar la textura para decirle al shader qué textura debe usar.
{
GL.ActiveTexture(textureUnit);
GL.BindTexture(TextureTarget.Texture2D, textureId);
int diUniform = GL.GetUniformLocation(shaderProgram, UniformName);
GL.Uniform1(diUniform, textureUnit - TextureUnit.Texture0);
}
Con esta pequeña modificación, ya estaremos renderizando texturas a través de los shaders.
No hay comentarios:
Publicar un comentario