1
我正面臨着一個奇怪的問題,我以一個未定義的,但某種程度上有效的紋理結束。應用此紋理的網格是黑色的。此紋理的glIsTexture(textureId)
方法返回1(!),但紋理顯然是錯誤的。它有未定義的大小。glGenTextures在glDeleteTextures後不久返回一個未定義紋理
我的iOS應用程序在短時間間隔內創建幾個紋理,但始終在主線程上。所描述的情況是不尋常的,難以再現和它僅發生在當一個特定的場景:
- 有用於
glDeleteTextures(1, &textureId)
,刪除一個紋理ID = N - 在短時間(〜0.05秒)有用於
glGenTextures(1, &textureId)
並且該函數返回一個新的紋理,其中id = N與最近刪除的紋理完全相同。
在我看來,像OpenGL驅動程序試圖創建一個新的紋理,而舊的沒有完全擦除。那可能嗎?
聽起來GL實施正在回收紋理ID。那有什麼問題? –
應用了紋理的網格顯示黑色表示您的紋理設置有誤,並且着色器正在讀取每個紋理樣本的0。 –
@節奏 - 回收ID非常好。問題是,在非常罕見的情況下,當ID在短時間間隔內回收時,新紋理是黑色的,沒有定義尺寸,但是有效(glIsTexture(textureId)返回1)。 – Greg