iPad现在支持OES_texture_half_float
扩展.不幸的是,我无法将浮点纹理绑定到帧缓冲对象.这是我的尝试:
GLuint textureHandle;
glGenTextures(1, &textureHandle);
glBindTexture(GL_TEXTURE_2D, textureHandle);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 256, 256, 0, GL_LUMINANCE, GL_HALF_FLOAT_OES, 0);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
assert(GL_NO_ERROR == glGetError()); // this passes
GLuint fboHandle;
glGenFramebuffers(1, &fboHandle);
glBindFramebuffer(GL_FRAMEBUFFER, fboHandle);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, textureHandle, 0);
assert(GL_FRAMEBUFFER_COMPLETE == glCheckFramebufferStatus(GL_FRAMEBUFFER)); // this asserts
Run Code Online (Sandbox Code Playgroud)
更换时,该工作正常GL_HALF_FLOAT_OES使用GL_UNSIGNED_BYTE.
这是iOS的限制还是我做错了什么?
我在这里发布了关于此主题的类似问题。
看来OES_texture_float 扩展目前仅在 iPhone 4S 和 iPad 2 上受支持,尽管Apple 指南中没有明确提及。
感谢 kal21指出了这一点。