opengl texture cube c ++

时间:2010-04-14 16:45:44

标签: c++ opengl cube

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

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);

但我看不出我的纹理,我错了什么? 感谢。

2 个答案:

答案 0 :(得分:4)

您尚未提供纹理坐标。您需要向glTexCoord(最常用的2f变体)发出一个调用,指示矢量映射到的纹理的一部分,之前 glVertex致电。

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

答案 1 :(得分:2)

首先,这似乎不是一个多维数据集而只是一个 quad ,一个多维数据集是由6个不同的四元组 ...(你可以使用{{1而不是GL_QUADS

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

来完成
GL_POLYGON

示例来自 NEHE OpenGL指南,我建议您先仔细阅读,因为它的解释很清楚:http://nehe.gamedev.net

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