使用 GLUT 在立方体上的 OpenGL 多纹理映射

Posted

技术标签:

【中文标题】使用 GLUT 在立方体上的 OpenGL 多纹理映射【英文标题】:OpenGL multiple texture mapping on a cube using GLUT 【发布时间】:2010-03-07 11:49:16 【问题描述】:

一直试图弄清楚如何使用 OpenGL 和 GLUT 在立方体的每一侧放置不同的纹理。我可以让它成为一个简单的纹理,但多个纹理不会。我会提出我的代码,但它现在又丑又乱。如果这很容易做到,请发布一些代码供我遵循。谢谢!

【问题讨论】:

您是在使用 gluCube 还是单独绘制每一面? 【参考方案1】:

它的NEHE openGL第22课http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=22,那么如果你想让每个面有不同的纹理,你可以通过切换glClientActiveTextureARB(GL_TEXTURE0_ARB);glClientActiveTextureARB(GL_TEXTURE1_ARB);来修改每个面的立方体渲染部分,取决于数量你有纹理。

例如: `

 // Back Face
    glClientActiveTextureARB(GL_TEXTURE0_ARB);
    glNormal3f( 0.0f, 0.0f,-1.0f);
    for (i=4; i<8; i++) 
        glTexCoord2f(data[5*i],data[5*i+1]);
        glVertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);
    
    // Top Face  
    glClientActiveTextureARB(GL_TEXTURE1_ARB);
    glNormal3f( 0.0f, 1.0f, 0.0f);
    for (i=8; i<12; i++) 
        glTexCoord2f(data[5*i],data[5*i+1]);
        glVertex3f(data[5*i+2],data[5*i+3],data[5*i+4]);
    

`

免责声明:我从不测试这些代码,它基于我的记忆,你应该检查我是否怀疑它是 glClientActiveTexture() 还是 glActiveTexture()

【讨论】:

以上是关于使用 GLUT 在立方体上的 OpenGL 多纹理映射的主要内容,如果未能解决你的问题,请参考以下文章

用OpenGL进行立方体表面纹理贴图

SDL 3d OpenGL:立方体上的纹理产生空白屏幕

OpenGL/GLUT:glTranslatef 和 glRotatef 在绘制立方体之前还是之后?

C++ openGl 纹理将图像映射到球体上

如何将纹理应用到四边形以纹理立方体?

通过 Glut 为 OpenGL 自定义纹理映射