OpenGL 纹理格式 GL_R11F_G11F_B10F - 选择数据类型
OpenGL texture format GL_R11F_G11F_B10F - choosing data type
我想使用内部格式为 GL_R11F_G11F_B10F 的纹理作为帧缓冲区附件(后处理效果、HDR 渲染)。我不确定应该选择哪种数据类型 - glTexImage2D 第 8 个参数。以下是可能的选项:
- GL_HALF_FLOAT
- GL_FLOAT
- GL_UNSIGNED_INT_10F_11F_11F_REV
能否请您解释一下我应该根据什么标准选择该类型?
glTexImage2D
的 format
和 type
指示 OpenGL 如何解释通过 data
参数传递给该函数的图像。由于您只是分配纹理而不指定任何图像(即设置 data = NULL
),因此 format
和 type
的确切值无关紧要。对它们的唯一要求是与 internalformat
兼容,否则 glTexImage2D
将在验证参数时生成 GL_INVALID_OPERATION
。
但是,由于您没有指定图像,因此最好在此处使用 glTexStorage2D
。此函数具有更简单的语义,您根本不需要指定 format
、type
和 data
。
我想使用内部格式为 GL_R11F_G11F_B10F 的纹理作为帧缓冲区附件(后处理效果、HDR 渲染)。我不确定应该选择哪种数据类型 - glTexImage2D 第 8 个参数。以下是可能的选项:
- GL_HALF_FLOAT
- GL_FLOAT
- GL_UNSIGNED_INT_10F_11F_11F_REV
能否请您解释一下我应该根据什么标准选择该类型?
glTexImage2D
的 format
和 type
指示 OpenGL 如何解释通过 data
参数传递给该函数的图像。由于您只是分配纹理而不指定任何图像(即设置 data = NULL
),因此 format
和 type
的确切值无关紧要。对它们的唯一要求是与 internalformat
兼容,否则 glTexImage2D
将在验证参数时生成 GL_INVALID_OPERATION
。
但是,由于您没有指定图像,因此最好在此处使用 glTexStorage2D
。此函数具有更简单的语义,您根本不需要指定 format
、type
和 data
。