使用 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 多纹理映射的主要内容,如果未能解决你的问题,请参考以下文章