我有一个关于如何在立方体上声明纹理点的问题
我的意思是:
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。答案 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);
关闭灯光,整个模型是否会显示?如果是这样,那么您需要确保您的灯具面向模型的问题部分,或者为灯光添加环境组件。