我有两张图片,并在此处的说明的帮助下: http ://en.wikibooks.org/wiki/OpenGL_Programming/Intermediate/Textures
我能够将它们单独存储到两个单独的纹理中,然后将它们上传到视频内存中:
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, width, height, GL_RGBA, GL_UNSIGNED_BYTE, data);
现在,我将如何使用着色器访问这些纹理以将这两个纹理相乘?
例如,我发现了这个例子,关于使用着色器的乘法: http ://www.opengl.org/wiki/Texture_Combiners
//Vertex shader
#version 110
attribute vec4 InVertex;
attribute vec2 InTexCoord0;
attribute vec2 InTexCoord1;
uniform mat4 ProjectionModelviewMatrix;
varying vec2 TexCoord0;
varying vec2 TexCoord1; //Or just use TexCoord0
//------------------------
void main()
{
gl_Position = ProjectionModelviewMatrix * InVertex;
TexCoord0 = InTexCoord0;
TexCoord1 = InTexCoord1;
}
//------------------------
//Fragment shader
#version 110
uniform sampler2D Texture0;
uniform sampler2D Texture1;
//------------------------
varying vec2 TexCoord0;
varying vec2 TexCoord1; //Or just use TexCoord0
//------------------------
void main()
{
vec4 texel = texture2D(Texture0, TexCoord0);
texel *= texture2D(Texture1, TexCoord1);
gl_FragColor = texel;
}
但是我将如何制作以顶点形式上传的纹理,以便我可以使用这个片段着色器来完成这种乘法。
我所做的只是生成 gluBuild2DMipmaps,但现在我不知道如何将顶点/片段着色器应用于我的纹理?