OES/EXT/ARB_framebuffer_object 扩展之间有什么区别。所有这些扩展都可以与 OpenGLES 1.1 或 OpenGLES2.0 应用程序一起使用吗?或者是否有任何指导方针与哪个版本的 GLESx.x 一起使用什么扩展?
1 回答
好的,经过一番谷歌搜索,我找到了以下信息......
- GLES FBO 是 GLES2 b 下的核心。在 GLES1 下,通过扩展 GL_OES_framebuffer_object 公开,API 入口点是 glFunctionNameOES
- 带有 GL_EXT_framebuffer_object 的 OpenGL 1.x/2.x,其中 API 入口点是 glSomeFunctionEXT
GL 3.x 下的 OpenGL 3.x FBO/GL_ARB_framebuffer_object,FBO 是核心,API 点也是 glSomeFunction,GL 2.x 有一个“backport”扩展,GL_ARB_framebuffer_object API 入口点是 glSomeFunction()。请注意缺少 EXT 或 ARB 后缀。
令牌命名:1a。没有后缀 1b。_OES
- _EXT
- 没有后缀。
幸运的是,令牌名称映射到相同的值 此外,它们的用法不同: 1a,1b:深度和模板缓冲区作为渲染缓冲区单独附加,或者也可能支持将两者作为扩展名 GL_OES_packed_depth_stencil 附加为一个缓冲区。
深度缓冲区默认为 16 位!2,3:规范允许单独附加深度和模板,但所有消费级桌面硬件不支持这一点,而是附加模板和深度缓冲区调用深度模板纹理。2. 扩展 GL_EXT_packed_depth_stencil,类型为 GL_DEPTH24_STENCIL8_EXT 3. 部分 FBO 规范,类型为 GL_DEPTH24_STENCIL8 注意:标记 GL_DEPTH24_STENCIL8 和 GL_DEPTH24_STENCIL8_EXT 的值相同。
GL_EXT_framebuffer_object 的问题 a) GL_EXT_framebuffer_object 可能未在 GL 3.x 上下文中列出,因为 FBO 是核心。b)另外,如果有一个带有较新硬件的 GL 2.x 上下文,可能没有列出 GL_EXT_framebuffer_object 但 GL_ARB_framebuffer_object 是
功能差异:通过 3.x/GL_ARB_framebuffer_object 支持的 FBO 允许颜色缓冲区属性具有不同的类型和分辨率,此外,MSAA 和 blit 功能
是 3.x 核心的一部分,也是 GL_ARB_framebuffer_object 的一部分。通过 GL_EXT_framebuffer_object 支持 FBO,blit 和 MSAA 支持都作为单独的扩展公开。