2016-10-04 140 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