Multitexturing曾经是简单和直接的。绑定纹理,调用glBegin,然后进行渲染,除了为每个纹理调用glMultiTexCoord而不是glTexCoord。然后,所有这些都被弃用了。
我现在在四处寻找正确的方法,但我从Khronos Group官方来源和博客上找到的所有教程都假设您希望对所有纹理使用相同的纹理坐标集,这是一个非常简单的假设,不适用于我的用例。
假设我有纹理A和纹理B,我想渲染纹理B中的颜色,在矩形rB中,使用纹理A中的Alpha值,在矩形rA中(为了简单起见,它具有与rB相同的高度和宽度,但不具有相同的Left和Top值),使用OpenGL 3,而不使用任何废弃的功能。这样做的正确方法是什么?
发布于 2015-08-11 19:48:08
在着色器中,您只需声明(并使用)一组额外的纹理坐标和第二个采样器。
vec4 sample1 = texture(texture1, texCoord1);
vec4 sample2 = texture(texture2, texCoord2);在指定模型时,将第二组texCoords添加到属性中:
glVertexAttribPointer(tex1Loc, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord1, Vertex));
glVertexAttribPointer(tex2LOC, 2, GL_FLOAT, GL_FALSE, sizeof(Vertex), (void*)offsetof(texCoord2, Vertex));https://stackoverflow.com/questions/31940645
复制相似问题