[英]OpenGL SOIL painting the entire screen with the texture colour
我正在嘗試使用SOIL libray在OpenGL中加載PNG紋理,並在GL QUAD中顯示紋理,但是當我調用該函數時,圖像被正確加載,但改變了整個屏幕的顏色!
如果是藍色圖像,則屏幕變為藍色顏料! 如果是紅色,變為紅色! 任何人都知道是什么導致了這個
沒有裝入圖像的正確顏色: http : //i.stack.imgur.com/OHroq.jpg
帶圖像的顏色錯誤: http : //i.stack.imgur.com/LyRwJ.jpg
碼:
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();
}
你似乎永遠不會再次禁用紋理。 OpenGL是一個狀態機,所以你設置或啟用的任何東西都會保持這種狀態,直到你設置其他東西/禁用它為止。 在你的情況下,你看起來像這個四邊形紋理,並指定texcoords你應該。 但對於所有其他物體,紋理仍然存在。 而且texcoords也是GL狀態。 但是當您打算繪制無紋理時,您似乎沒有為其他四邊形設置新的texcoords,所有頂點將使用0.0,1.0作為texcoords,因此您基本上使用紋理的邊紋理元素來修改所有其他對象的顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.