KlayGE 4.4中渲染的改进(五):OpenGL 4.4和OpenGLES 3
转载请注明出处为KlayGE游戏引擎,本文的永久链接为http://www.klayge.org/?p=2796
上一篇我们提到了SSSSS,作为本系列的最后一篇,本文将介绍KlayGE 4.4的OpenGL和OpenGLES插件的改进。
OpenGL 4.4
KlayGE在OpenGL方面一直是紧跟spec的步伐,这次也不例外。在八月份OpenGL 4.4发布的时候,glloader和KlayGE的OpenGL插件就很快加上了4.4的支持。并且这次把代码彻底过了一遍,很多原先通过扩展实现的功能,都尽量替换成用核心实现的,提高兼容性。
经过测试,OpenGL插件在NV和Intel的显卡上所有例子都能正常工作。
OpenGLES 3.0
虽然GLES3出了有一段时间了,但硬件支持度和开发环境都还没跟上,所以原先OpenGLES插件只支持2.0。这次尝试了PowerVR和Mali的OpenGLES 3模拟器,觉得还行,就加上了GLES3的支持。Adreno的模拟器在dll导出上不合规范,需要额外的工作才有可能载入。所以这个版本暂不支持。
在开发中发现,PVR和Mali都不支持GL_EXT_color_buffer_half_float和GL_EXT_color_buffer_float,没法渲染到浮点纹理。奇葩的是Tegra 3虽然也没报告支持那两个扩展,但能写入ABGR16F格式的纹理。 PVR的模拟器甚至不支持读取浮点纹理,即便是GLES3要求支持。另外,由于ESSL生成器还不是很完善,目前的ESSL只能用GLES2的,所以不支持3D纹理和ddx/ddy。
在VAO方面,虽然GLES3支持VAO,但似乎不支持把index buffer也放入VAO。所以每次得单独设置index buffer。
本系列就到此为止,KlayGE 4.5的开发已经开始,将会带来更多先进并实用的功能。在这里祝大家新年快乐!