更新
我已停止使用glutSolidCube
并开始手动应用纹理。仍然无济于事。任何想法,如果没有,你能指出一个纹理成功应用于立方体的例子吗?
glRotatef(180, 0.0f, 1.0f, 0.0f);
glBindTexture(GL_TEXTURE_CUBE_MAP, texture);
glTranslatef(pos_x, 0, pos_z);
int size = 1;
// Begin Rending
glBegin(GL_QUADS);
// Face 1
glNormal3f( 0.0f, 0.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f( size, size,-size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-size, size,-size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-size, size, size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f( size, size, size);
// Face 2
glNormal3f( 0.0f, 0.0f,-1.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f( size,-size, size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-size,-size, size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-size,-size,-size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f( size,-size,-size);
// Face 3
glTexCoord2f(0.0f, 0.0f);
glVertex3f( size, size, size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-size, size, size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-size,-size, size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f( size,-size, size);
// Face 4
glNormal3f( 0.0f,-1.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f( size,-size,-size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-size,-size,-size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-size, size,-size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f( size, size,-size);
// Face 5
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f(-size, size, size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f(-size, size,-size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f(-size,-size,-size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f(-size,-size, size);
// Face 6
glNormal3f( 1.0f, 0.0f, 0.0f);
glTexCoord2f(0.0f, 0.0f);
glVertex3f( size, size,-size);
glTexCoord2f(1.0f, 0.0f);
glVertex3f( size, size, size);
glTexCoord2f(1.0f, 1.0f);
glVertex3f( size,-size, size);
glTexCoord2f(0.0f, 1.0f);
glVertex3f( size,-size,-size);
glEnd();
我正在用OpenGL + Glut制作一个简单的基于体素的游戏,我在加载纹理并将其应用到立方体时遇到了麻烦。纹理在这里创建:
texture = SOIL_load_OGL_cubemap (
"block.png",
"block.png",
"block.png",
"block.png",
"block.png",
"block.png",
SOIL_LOAD_RGB,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS
);
并在此处应用绘制方法:
glEnable(GL_TEXTURE_GEN_S); //enable texture coordinate generation
glEnable(GL_TEXTURE_GEN_T);
glBindTexture(GL_TEXTURE_2D, texture);
glutSolidCube(2);
glDisable(GL_TEXTURE_GEN_S); //enable texture coordinate generation
glDisable(GL_TEXTURE_GEN_T);
但是当我运行应用程序时,我仍然得到一个坚固的白色立方体。
我错过了一些非常明显的东西吗?
答案 0 :(得分:0)
glutSolidCube不包含uv坐标,因此OpenGL无法知道应该在哪里应用纹理。我相信只有glutSolidTeapot才能以这种方式纹理化?但不确定。
无论如何,没有任何方法可以轻松地纹理glutSolidCube,而不是自动生成uv坐标。我不确定如何做到这一点,但这link可能会有所帮助。如果您不想处理自动生成坐标,那么只需手动绘制立方体并在那里指定uv。