2011-01-20 84 views
3

從我在OpenGL文檔中看到的,OpenGL比RGB更喜歡BGR格式。但是,將紋理的內部格式設置爲BGR時,渲染時紋理全部爲白色。當內部格式設置爲RGB或RGBA時,它會正確顯示。源格式是BGR開始(直接從DIB加載)。OpenGL GL_BGR不適用於紋理內部格式

glBindTexture(GL_TEXTURE_2D, id); 
glPixelStorei(GL_UNPACK_ALIGNMENT, 4); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, nClamp); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, nClamp); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, nMagFilter); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, nMinFilter); 
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); 

下面一行是問題...設置內部格式GL_BGR使一切都全白了......變爲GL_RGB使得它正確

glTexImage2D(GL_TEXTURE_2D, 0, GL_BGR, pTex->nWidth, pTex->nHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, pTex->pBuffer); 
+0

什麼是`nMinFilter`?如果它有`MIPMAP`,你將不得不提供一套完整的mipmap級別。 – genpfault 2011-01-20 16:34:33

回答

2

glTexImage2D man page渲染,GL_BGR不一個內部格式,只是一種格式。

您應該檢查GL錯誤,因爲這會發現此錯誤。你讀到關於「喜歡BGR的OpenGL」是錯誤的。