2013-05-04 112 views
0

我試圖在OpenGL中使用SOIL圖形加載PNG紋理,並在GL四邊顯示紋理,但是當我調用函數時,圖像加載正確,但改變整個屏幕的顏色!使用紋理顏色繪製整個屏幕的OpenGL土壤

如果是藍色圖像,屏幕變成藍色色素! 如果紅色,變爲紅色! 任何人都知道是什麼原因造成這種

正確的顏色沒有圖片加載:http://i.stack.imgur.com/OHroq.jpg

錯誤的顏色與圖片加載:http://i.stack.imgur.com/LyRwJ.jpg

CODE:

int LoadGLTextures()  {    

    texture[0] = SOIL_load_OGL_texture("test.png", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID,SOIL_FLAG_INVERT_Y); 

    glBindTexture(GL_TEXTURE_2D, texture[0]); 

    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);} 

和方形碼:

glBindTexture(GL_TEXTURE_2D, texture[0]); 

    glBegin(GL_QUADS); 

    glColor3f(1.0f, 1.0f, 1.0f); 

    glTexCoord2f(0.0f, 0.0f); glVertex3f(mover, 11.0f, 1.0f); 
    glTexCoord2f(1.0f, 0.0f); glVertex3f(mover+44,11.0f, 1.0f); 
    glTexCoord2f(1.0f, 1.0f); glVertex3f(mover+44, 44.0f, 1.0f); 
    glTexCoord2f(0.0f, 1.0f); glVertex3f(mover, 44.0f, 1.0f); 

    glEnd(); 
} 

回答

2

你似乎再也不會禁用紋理。 OpenGL是一個狀態機,所以你設置或啓用的任何東西都會保持這種方式,直到你設置其他東西/禁用它。在你的情況,它看起來像你紋理這一個四邊形,並指定texcoords,你應該。但是對於所有其他對象,紋理仍然存在。 texcoords也是GL狀態。但是當你打算繪製無紋理時,你似乎沒有爲其他四邊形設置新的texcoords,所有頂點將使用0.0,1.0作爲texcoords,所以基本上使用紋理的邊緣紋理來修改所有其他對象的顏色。

+0

曾與「glDisable(GL_TEXTURE_2D);」 謝謝! = d – Joao 2013-05-04 15:26:55