【问题标题】:OpenGL texture format GL_R11F_G11F_B10F - choosing data typeOpenGL 纹理格式 GL_R11F_G11F_B10F - 选择数据类型
【发布时间】: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。然后片段着色器渲染到该纹理。

标签: opengl textures


【解决方案1】:

glTexImage2Dformattype 指示 OpenGL 如何解释您通过 data 参数传递给该函数的图像。由于您只是分配纹理而不指定任何图像(即设置data = NULL),因此formattype 的确切值无关紧要。对它们的唯一要求是与internalformat 兼容,否则glTexImage2D 将在验证参数时生成GL_INVALID_OPERATION

但是,由于您没有指定图像,因此最好在此处使用glTexStorage2D。这个函数语义更简单,你根本不需要指定formattypedata

【讨论】:

    猜你喜欢
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2016-01-11
    • 2018-07-29
    • 1970-01-01
    相关资源
    最近更新 更多