我在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。
答案 0 :(得分:1)
我现在的“解决方案”是将自己的双线性插值添加到片段着色器中,因为当使用GL_FLOAT时,OpenGL不会为我做这个。