大佬教程收集整理的这篇文章主要介绍了如何在iOS中使用GL_HALF_FLOAT_OES类型的纹理?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我了解到,所有新的iOS设备都应该支持OES_texture_float扩展功能(即从iPhone 3GS / iPod Touch 3 / iPad根据Apple guide开始).
但是,当我创建这样一个纹理
glTexImage2D(GL_TEXTURE_2D,GL_RGB,width,height,GL_HALF_FLOAT_OES,null);
开始我的应用程序并在仪器中检查它,它告诉我:
好奇的是,它仍然在我的iPhone 4S上工作,但不是在iPhone 4上(也应该被支持).但是,出现这两个设备的错误信息.但是在iPhone 4中,OpenGL无法使用此纹理作为渲染目标构建一个有效的framebuffer对象.在4S上,效果很好.
你有什么建议我做错了吗?
谢谢!
在几乎所有的iOS设备上,都可以创建和使用浮点型和半浮点型纹理.实际上,所有支持OES_texture_float扩展(或分别为OES_texture_half_float)的设备都允许创建浮点型纹理.
但是,如果要使用Framebuffer对象将其转换为浮点型纹理,则该设备还需要支持EXT_color_buffer_half_float扩展.顾名思义,此扩展允许将半浮点型纹理绑定到FBO的渲染目标.
现在,事实证明,此扩展仅在具有PowerVR SGX 543或554显卡的设备上支持,这些设备基本上都是在iPhone 4S之后发布的(以及包括)的所有设备.您可以查阅Apple的OpenGL ES Hardware Platform Guide for iOS以获取设备列表及其功能.
概要:
如果要渲染到浮点型纹理,则需要检查您的设备是否支持EXT_color_buffer_half_float扩展名,并且您需要创建纹理
glTexImage2D(GL_TEXTURE_2D,GL_RGBA,null);
如果您的设备不支持半浮点颜色缓冲区,则只能将无符号字节类型的纹理绑定到FBO:
glTexImage2D(GL_TEXTURE_2D,GL_UNSIGNED_BYTE,null);
(请注意,纹理的格式和内部格式(本例中为GL_RGBA)取决于FBO的附件点.)
以上是大佬教程为你收集整理的如何在iOS中使用GL_HALF_FLOAT_OES类型的纹理?全部内容,希望文章能够帮你解决如何在iOS中使用GL_HALF_FLOAT_OES类型的纹理?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。