2016-10-04 227 views
1

我目前使用glClearBuffer*函數來清除在OpenGL ES 3.0中運行的項目中的繪製緩衝區。該glClearBuffer documentation狀態如下:glClearBuffer *澄清

glClearBufferfvglClearBufferiv,和glClearBufferuiv命令應該被用來清除定點,分別有符號整數,和無符號整數的顏色緩衝器。

我說得對不對,瞭解它如下:

使用glClearBufferfv如果平局緩衝區GL_FLOAT
使用glClearBufferiv如果繪製緩衝區GL_INT
使用glClearBufferuiv如果繪製緩衝區GL_UNSIGNED_INT

這是正確的嗎?我在問,因爲沒有提到(我可以告訴)有關清除其他類型的緩衝區的正確方法,例如GL_BYTEGL_UNSIGNED_BYTE

謝謝!

回答

2

fv版本應該用於normalized or floating-point image formats的緩衝區。 ivuiv版本應該用於帶有符號和無符號整數格式的緩衝區。

這並不會將它們限制爲特定的格式,而是一般的類別的格式。 GL_RGBA8UI是一個無符號整數格式,與GL_R32UI一樣。

GL_INT不是任何一種圖像格式。

+0

我知道'GL_INT'不是格式,我沒有提到它是一個。但是,如果沒有列出所有已知格式的開關盒,是不是可以檢查格式的**類型**? – Deathicon

+0

@Deathicon:「*但沒有列出所有已知格式的開關盒*」爲什麼你會有一個?一般來說,你知道你的渲染目標的格式是什麼。大多數時候,它很難被編碼到你的應用程序中。那麼,爲什麼你需要一個switch語句? –

+0

這不是硬編碼,在項目中,用戶可以根據需要使用渲染目標類型創建內容。 – Deathicon