纹理在OpenGL位置(position for texture in opengl)

2019-10-21 16:59发布

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

是正是我的意思是:

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

毕竟我关闭“纹理声明与”

glDisable(GL_TEXTURE_2D);

提前致谢

编辑:

正面与所述图像中所示,另一侧未示出,甚至没有“cubeside”。 现在我只用一张图片,这是黑与一些随机的空格,所以确切位置并不多importent尽管我很interessted如何设置glTexCoord2f权利。

Answer 1:

由于您使用的负纹理坐标(或称真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); 并在整个模型显示? 如果是这样,那么你需要确保你有面对模型的问题部分的光,或添加环境成分以你的光。



Answer 2:

究竟它是如何不工作?

如果纹理没有显示出来或应用纹理错了,这意味着你必须设置一个不同的纹理glBindTexture()。

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



文章来源: position for texture in opengl