【问题标题】:How to properly use GL_HALF_FLOAT_OES for textures?如何正确使用 GL_HALF_FLOAT_OES 纹理?
【发布时间】:2012-11-09 06:31:27
【问题描述】:

我在 iPad 2 / 3 上使用 OpenGL ES 2.0。我想在创建纹理时使用 GL_FLOAT:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_FLOAT, rawData);

但问题是,如果您的支持扩展列表中没有显示 GL_OES_texture_float_linear,则在使用 GL_FLOAT 时不支持 GL_LINEAR 作为 GL_TEXTURE_MAG_FILTER。 (iPad 没有。)

但我的扩展列表中确实有 GL_OES_texture_half_float_linear。所以使用半浮点纹理应该与线性插值一起使用。

问题是,将我的纹理创建切换到:

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, texWidth, texHeight, 0, GL_RGBA, GL_HALF_FLOAT_OES, rawData);

在我运行应用程序时导致 EXC_BAD_ACCESS。 (libGPUSupportMercury.dlylib'gpus_ReturnGuiltyForHardwareRestart)

自从使用 GL_FLOAT 调用数据后,我没有更改数据的格式。输入数据是否需要以某种方式更改为 HALF_FLOAT?如果是这样,怎么做?我不知道如何将输入浮点数分成两半。每个组件目前都是 GLfloat。

【问题讨论】:

    标签: opengl-es-2.0 textures linear-interpolation glteximage2d


    【解决方案1】:

    我现在的“解决方案”是将我自己的双线性插值添加到片段着色器中,因为当使用 GL_FLOAT 时 OpenGL 不会为我做这件事。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      • 1970-01-01
      • 2012-12-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多