簡體   English   中英

OpenGL SOIL用紋理顏色繪制整個屏幕

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

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