OpenGL 纹理格式 GL_R11F_G11F_B10F - 选择数据类型
Posted
技术标签:
【中文标题】OpenGL 纹理格式 GL_R11F_G11F_B10F - 选择数据类型【英文标题】:OpenGL texture format GL_R11F_G11F_B10F - choosing data type 【发布时间】:2022-01-17 19:23:08 【问题描述】:我想使用内部格式为 GL_R11F_G11F_B10F 的纹理作为帧缓冲附件(后处理效果、HDR 渲染)。我不确定我应该选择哪种数据类型 - glTexImage2D 第 8 个参数。以下是可能的选项:
GL_HALF_FLOAT GL_FLOAT GL_UNSIGNED_INT_10F_11F_11F_REV您能否解释一下我应该根据哪些标准选择该类型?
【问题讨论】:
您根据数据的格式选择。glTexImage2D
的数据来自哪里?
这是一个帧缓冲附件,所以最初 nullptr 作为数据参数传递给 glTexImage2D。然后片段着色器渲染到该纹理。
【参考方案1】:
glTexImage2D
的 format
和 type
指示 OpenGL 如何解释您通过 data
参数传递给该函数的图像。由于您只是分配纹理而不指定任何图像(即设置data = NULL
),因此format
和type
的确切值无关紧要。对它们的唯一要求是与internalformat
兼容,否则glTexImage2D
将在验证参数时生成GL_INVALID_OPERATION
。
但是,由于您没有指定图像,因此最好在此处使用glTexStorage2D
。这个函数语义更简单,你根本不需要指定format
、type
和data
。
【讨论】:
以上是关于OpenGL 纹理格式 GL_R11F_G11F_B10F - 选择数据类型的主要内容,如果未能解决你的问题,请参考以下文章