0
glBindTexture(GL_TEXTURE_2D, texidx);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 512, 512, 0, GL_RGBA, GL_FLOAT, texdata);
如果texidx == 0
一切完美,但如果texidx != 0
,或使用glGenTexture(&texidx,1)
產生,最終的表現說明只是純色(最後glColor)而不是質感。我一直在調試超過一天(glGetError顯示沒有問題)並且正在用盡想法。有什麼想法嗎?我可以根據需要發佈更多代碼。OpenGL的工作不
設置代碼:
glEnable (GL_BLEND);
glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glDisable(GL_LIGHTING);
glClearColor(0.5,0.5,0.5,0);
glClearDepth(1);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glDisable(GL_COLOR_MATERIAL);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
嘿馬蒂亞斯討論,這是一個非常好的問題,但在這種情況下是沒有問題的,因爲我使用GL_NEAREST。我已經在上面添加了我的設置代碼以幫助澄清。 如上所述,奇怪的TexId = 0是唯一正確適用於我的情況。 – Meekohi 2010-06-11 12:02:47
啊哈,但是我需要爲每個紋理(杜)設置過濾器。 確保運行後問題得到修復 glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); IMMEDIATELY在綁定紋理後,並且在glTexImage2D()之前。 :: sigh ::如果openGL在這種情況下有一些合理的行爲,或者至少會引發一個錯誤,它會不會很好? – Meekohi 2010-06-11 12:11:23
詳見:http://www.opengl.org/wiki/Common_Mistakes#Creating_a_Texture_.232.2C_glTexEnvi – Meekohi 2010-06-11 12:11:44