我在 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。