[英]opengl texture cube c++
你好,我创建一个多维数据集,并希望在一侧的纹理。
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);
但我看不到纹理,我做错了什么? 谢谢。
您尚未提供纹理坐标。 您需要在相应的glVertex
调用之前发出一次对glTexCoord
(最常用的2f
变体)的调用,以指示矢量映射到的纹理的一部分。
否则,OpenGL不知道应如何将纹理粘贴到多边形上。
首先,这似乎不是一个立方体,而只是一个四边形 ,一个立方体由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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.