opengl中纹理的位置

时间:2010-05-11 18:01:02

标签: opengl textures

我有一个关于如何在立方体上声明纹理点的问题

我的意思是:

glTexCoord2f(x.f, y.f);

对于正面,我的声明有效:

glBegin(GL_POLYGON);   //Vorderseite
        glNormal3f(0.0f, 0.0f, 1.0f);//normale für vorderseite

    glTexCoord2f(0.0f, -1.f);
    glVertex3f(-fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f); 

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(-fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/2.0f);
    glEnd();

但是对于右侧,它不起作用,我建议我需要其他参数,对于glTexCoord2f,但我不知道女巫。

glBegin(GL_POLYGON);   //Rechte Seite

    glNormal3f(1.0f, 0.0f, 0.0f); //normale für rechte seite

    glTexCoord2f(0.0f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,+fSeitenL/2.0f);

    glTexCoord2f(1.0f, -1.f);
    glVertex3f(+fSeitenL/2.0f,-fSeitenL/2.0f,-fSeitenL/0.0f);

    glTexCoord2f(1.0f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,-fSeitenL/0.0f);

    glTexCoord2f(0.0f, 0.0f);
    glVertex3f(+fSeitenL/2.0f,+fSeitenL/2.0f,+fSeitenL/0.0f);
    glEnd();

毕竟我关闭了“texture-declaration with”

glDisable(GL_TEXTURE_2D);

提前致谢

编辑:

前视图与图片一起显示,另一侧未显示,甚至不显示“立方体”。 现在我只使用一张带有一些随机白色空间的黑色图片,所以准确的位置并不是那么重要,尽管我非常喜欢如何设置glTexCoord2f。

2 个答案:

答案 0 :(得分:0)

它究竟是如何起作用的?

如果未显示纹理或应用了错误的纹理,则表示必须使用glBindTexture()设置不同的纹理。

如果纹理对齐不正确,则必须确保两个面之间共享的顶点具有相同的纹理坐标。

答案 1 :(得分:0)

由于你使用负纹理坐标(或者实际上在0..1范围之外的任何东西),你需要确保纹理包裹模式设置为重复。

glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT );
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT );

如果将它们设置为GL_CLAMP,则任何小于0的值都将设置为0,任何大于1的值都将设置为1.但由于您说模型的第一部分纹理正确,这可能是不是你的问题。

下一个最可能的问题是照明。如果您使用glDisable(GL_LIGHTING);关闭灯光,整个模型是否会显示?如果是这样,那么您需要确保您的灯具面向模型的问题部分,或者为灯光添加环境组件。