2010-10-03 145 views
7

iPad现在支持OES_texture_half_float 扩展名。不幸的是,我无法将浮点纹理绑定到帧缓冲区对象。这里是我的尝试:渲染到iOS下的浮点纹理

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 

这与GL_UNSIGNED_BYTE更换GL_HALF_FLOAT_OES时工作正常。

这是iOS的限制还是我做错了什么?

+0

你是否设法让它工作到最后?也许与更高版本的iOS? – twerdster 2011-08-22 20:02:33

+1

更新版本的iOS支持EXT_color_buffer_half_float,这是工作所必需的。 – prideout 2014-09-09 00:19:00

+0

骄傲,我有同样的错误。看起来像是不支持在iOS设备上渲染浮动纹理。因为,OpenGL ES 2.0规范将此功能标记为非强制性。你有没有对此做过更多的研究?可以确认这种限制吗? – HARDWARRIOR 2010-10-11 19:21:25

回答