2

OES/EXT/ARB_framebuffer_object 扩展之间有什么区别。所有这些扩展都可以与 OpenGLES 1.1 或 OpenGLES2.0 应用程序一起使用吗?或者是否有任何指导方针与哪个版本的 GLESx.x 一起使用什么扩展?

4

1 回答 1

0

好的,经过一番谷歌搜索,我找到了以下信息......

  1. GLES FBO 是 GLES2 b 下的核心。在 GLES1 下,通过扩展 GL_OES_framebuffer_object 公开,API 入口点是 glFunctionNameOES
  2. 带有 GL_EXT_framebuffer_object 的 OpenGL 1.x/2.x,其中 API 入口点是 glSomeFunctionEXT
  3. 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

    1. _EXT
    2. 没有后缀。

    幸运的是,令牌名称映射到相同的值 此外,它们的用法不同: 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 支持都作为单独的扩展公开。

于 2013-02-25T04:33:30.460 回答