0

多重纹理曾经简单明了。你绑定你的纹理,你调用glBegin,然后你进行渲染,除了glTexCoord你调用glMultiTexCoord每个纹理。然后所有这些都被弃用了。

我正在四处寻找正确的方法,但我找到的所有教程,无论是来自官方 Khronos Group 资源还是博客,都假设你想对所有的使用相同的纹理坐标集您的纹理,这是一个非常简单的假设,不适用于我的用例。

假设我有纹理 A 和纹理 B,我想渲染纹理 B 中的颜色,在 rectrB中,使用纹理 A 中的 alpha 值,在 rect中,(为简单起见rA,它具有相同的高度和宽度rB,但不一样的 Left 和 Top 值),使用 OpenGL 3,没有任何不推荐使用的功能。这样做的正确方法是什么?

4

1 回答 1

1

在着色器中,您只需声明(并使用)一组额外的纹理坐标和第二个采样器。

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));
于 2015-08-11T11:48:08.207 回答