2012-04-17 136 views
0
glDeleteTextures(total, &Item::texture[0]); 
glGenTextures(total, &Item::texture[0]); 

迭代所有圖像,總數;OpenGL更改/重新加載紋理

glBindTexture(GL_TEXTURE_2D, Item::texture[i]); 
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits()); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 

嘗試重新加載紋理,但它沒有。紋理保持不變,保持不變。任何想法如何可以/應該處理?爲了清晰起見,我試圖用新的紋理重新加載紋理,最好不要改變紋理的數量(因爲可能會有很多變化)。

我正在使用Qt,C++。上面的代碼在一個獨立的GLwidget中是一個靜態函數。

+0

有趣的是,您總是刪除索引爲0的紋理,並在同一個索引(0)處生成一個新的紋理,但是您將索引'i'處的紋理綁定在一起。某些東西聞起來很有趣.. – karlphillip 2012-04-17 17:40:19

+0

@karlphillip'total'是紋理的計數,第二個參數是數組的開始指針。但是爲什麼只是在數據發生變化時一次又一次地刪除和重新創建紋理? – 2012-04-17 17:44:58

+0

嗯..你可能是對的,要檢查一下。 – RobotRock 2012-04-17 17:45:08

回答

3

當你進行這些調用時,你有可能被綁定到錯誤的渲染上下文或根本沒有渲染上下文?