簡體   English   中英

OpenGL:紋理加載但未應用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM