[英]OpenGL: Texture loading but not applied
更新
我已經停止使用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
);
並應用於這里的draw方法:
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);
但是,當我運行該應用程序時,我仍然得到一個純白色的立方體。
(來源: snag.gy )
我是否缺少一些顯而易見的東西?
glutSolidCube不包含uv坐標,因此OpenGL無法知道應在何處應用紋理。 我相信只有glutSolidTeapot可以通過這種方式進行紋理處理嗎? 雖然不確定。
無論如何,除了自動生成uv坐標外,沒有任何方法可以輕松使glutSolidCube貼圖。 我不確定如何執行此操作,但是此鏈接可能會有所幫助。 如果您不想處理自動生成的坐標,則只需手動繪制多維數據集並在其中指定uvs。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.