C++ opengl纹理立方体c++;
您好,我创建了一个立方体,希望在一边有一个纹理C++ opengl纹理立方体c++;,c++,opengl,cube,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); glBe
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不知道如何将纹理粘贴到多边形上。您没有提供纹理坐标。在相应的
glVertex
调用之前,您需要发出一个对glTexCoord
(最常用的2f
变量)的调用,该调用指示向量映射到的纹理的一部分
否则,OpenGL不知道如何将纹理粘贴到多边形上。首先,这看起来不是一个立方体,而是一个四边形,一个立方体由6个不同的四边形组成。。(您可以使用
GL_四边形
,而不是GL_多边形
)
第二件事是你正在加载纹理,但没有将其映射到顶点。你需要提供坐标来映射纹理应该如何适应四边形。你可以使用
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);
该示例摘自《NEHEOpenGL指南》,我真的建议您看一看,因为它解释得很好:
检查教程6中关于纹理贴图的内容:首先,这看起来不是一个立方体,而是一个四边形,一个立方体由6个不同的四边形组成。(
GL_四边形
可以代替GL_多边形
)
第二件事是你正在加载纹理,但没有将其映射到顶点。你需要提供坐标来映射纹理应该如何适应四边形。你可以使用
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);
该示例摘自《NEHEOpenGL指南》,我真的建议您看一看,因为它解释得很好:
查看教程6中有关纹理贴图的内容: