2013-08-06 76 views
1

几天前,我开始了一个与opengl 1.1(我知道它非常过时)的小体素游戏。我使用sfml库来创建一个opengl上下文。我认为问题出在纹理坐标上,但我不确定。渲染代码:OpenGL纹理立方体没有正确映射

glPushMatrix(); 
    glBegin(GL_QUADS); 
    glColor3f(0.5, 0.5, 0.5); 
    //front 
    glTexCoord2f(0, 0); glVertex3f(0, 0, 0); 
    glTexCoord2f(1, 0); glVertex3f(0, 1, 0); 
    glTexCoord2f(1, 1); glVertex3f(1, 1, 0); 
    glTexCoord2f(1, 0); glVertex3f(1, 0, 0); 
    //back 
    glTexCoord2f(0, 0); glVertex3f(0, 0, 1); 
    glTexCoord2f(1, 0); glVertex3f(0, 1, 1); 
    glTexCoord2f(1, 1); glVertex3f(1, 1, 1); 
    glTexCoord2f(1, 0); glVertex3f(1, 0, 1); 
    glColor3f(0.6, 0.6, 0.6); 
    //top 
    glTexCoord2f(0, 0); glVertex3f(0, 1, 0); 
    glTexCoord2f(1, 0); glVertex3f(0, 1, 1); 
    glTexCoord2f(1, 1); glVertex3f(1, 1, 1); 
    glTexCoord2f(1, 0); glVertex3f(1, 1, 0); 
    //bottom 
    glTexCoord2f(0, 0); glVertex3f(0, 0, 0); 
    glTexCoord2f(1, 0); glVertex3f(0, 0, 1); 
    glTexCoord2f(1, 1); glVertex3f(1, 0, 1); 
    glTexCoord2f(1, 0); glVertex3f(1, 0, 0); 
    glColor3f(0.7, 0.7, 0.7); 
    //left 
    glTexCoord2f(0, 0); glVertex3f(0, 0, 0); 
    glTexCoord2f(1, 0); glVertex3f(0, 1, 0); 
    glTexCoord2f(1, 1); glVertex3f(0, 1, 1); 
    glTexCoord2f(1, 0); glVertex3f(0, 0, 1); 
    //right 
    glTexCoord2f(0, 0); glVertex3f(1, 0, 0); 
    glTexCoord2f(1, 0); glVertex3f(1, 1, 0); 
    glTexCoord2f(1, 1); glVertex3f(1, 1, 1); 
    glTexCoord2f(1, 0); glVertex3f(1, 0, 1); 
    glEnd(); 
    glPopMatrix(); 

这是在游戏中的木纹理的一个: In game texture

这是木材纹理的图片: enter image description here

它被映射在真古怪。哪里不对?有人可以发布一个普通纹理立方体的例子吗?

回答

4

试着改变你的代码:

glTexCoord2f(0, 0); ... 
glTexCoord2f(1, 0); ... 
glTexCoord2f(1, 1); ... 
glTexCoord2f(1, 0); ... 

glTexCoord2f(0, 0); ... 
glTexCoord2f(1, 0); ... 
glTexCoord2f(1, 1); ... 
glTexCoord2f(0, 1); ... (changed this line) 

你映射立方体的两个角纹理的相同点。

+0

谢谢,我会试试 –

+0

哦,我觉得很愚蠢!我为什么这样做?无论如何,非常感谢你!我可以继续我的体素游戏! –