0

你好,我创建了一个立方体,并希望在一侧有纹理。

glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, filterMode);
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, filterMode);

        glBegin(GL_POLYGON);   //Vorderseite
    glColor4f(1.0f,0.0f,0.0f,1.0f); //ROT
    glVertex3f(-fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);
    glColor4f(1.0f,1.0f,0.0f,1.0f); //GELB
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);
    glColor4f(1.0f,1.0f,1.0f,1.0f); //WEISS
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f);
    glColor4f(1.0f,0.0f,1.0f,1.0f); //MAGENTA
    glVertex3f(-fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f);
    glEnd();

    glDisable(GL_TEXTURE_2D);

但我看不到我的纹理,我做错了什么?谢谢。

4

2 回答 2

4

您还没有提供纹理坐标。在相应的调用之前,您需要发出一个调用glTexCoord2f最常用的变体)来指示向量映射到的纹理的一部分。glVertex

否则,OpenGL 不知道应该如何将纹理粘贴到多边形上。

于 2010-04-14T16:50:34.227 回答
2

首先,这似乎不是一个立方体,而只是一个四边形,一个立方体由 6 个不同的四边形组成..(您可以GL_QUADS使用GL_POLYGON.

第二件事是您正在加载纹理但没有将其映射到顶点。您需要提供坐标来映射纹理应如何适合四边形。您可以使用

glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f,  1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f,  1.0f,  1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f,  1.0f,  1.0f);

该示例取自NEHE OpenGL 指南,我真的建议您看一下,因为它解释得很好:http: //nehe.gamedev.net

查看关于纹理映射的教程 6:http: //nehe.gamedev.net/data/lessons/lesson.asp ?lesson=06

于 2010-04-14T16:53:08.747 回答