如何制作一个纹理映射的立方体,在内部和外部显示不同的纹理

时间:2015-01-22 21:22:28

标签: c++ opengl mapping textures

如何制作一个纹理贴图的立方体,在内外显示不同的纹理?

通过在立方体中映射纹理,我从立方体中看到了相同的纹理,我需要不同的纹理。

使用OpenGL 3.3或更高版本以及C ++。

2 个答案:

答案 0 :(得分:1)

渲染立方体两次,第二次使用不同的纹理和相反的glFrontFace()

答案 1 :(得分:1)

片段着色器中有一个内置的gl_FrontFacing变量,它允许您测试当前渲染的三角形是否正面。您可以根据此值使用不同的纹理。片段着色器的相关部分可能如下所示:

uniform sampler2D FrontTex;
uniform sampler2D BackTex;
in vec2 TexCoord;
out FragColor;

void main() {
    if (gl_FrontFacing) {
        FragColor = texture(FrontTex, TexCoord);
    } else {
        FragColor = texture(BackTex, TexCoord);
    }
}

在C ++代码中,将两个纹理绑定到不同的纹理单元,并相应地设置采样器制服。