Opengl es 试图理解opengl

Opengl es 试图理解opengl,opengl-es,Opengl Es,我正在阅读苹果公司提供的OpenGL ES指南,但我没有完全理解它的细节,我有一个问题。如果你能帮助我理解,我非常感激。在第28页,关于绘画的章节中,它说: 要正确创建帧缓冲区,请执行以下操作: 创建帧缓冲区对象 创建一个或多个目标(渲染缓冲区或纹理),为其分配存储空间,并将每个目标附着到 帧缓冲区对象 测试帧缓冲区的完整性 我的问题是:在第2点中,它不应该说“创建一个或多个源…”?据我目前所知,帧缓冲区是在我的draw方法中渲染到屏幕上的内容。因此,如果我们通过将图像附加到帧缓冲区来指定要渲染

我正在阅读苹果公司提供的OpenGL ES指南,但我没有完全理解它的细节,我有一个问题。如果你能帮助我理解,我非常感激。在第28页,关于绘画的章节中,它说:

要正确创建帧缓冲区,请执行以下操作:

  • 创建帧缓冲区对象
  • 创建一个或多个目标(渲染缓冲区或纹理),为其分配存储空间,并将每个目标附着到 帧缓冲区对象
  • 测试帧缓冲区的完整性

  • 我的问题是:在第2点中,它不应该说“创建一个或多个源…”?据我目前所知,帧缓冲区是在我的draw方法中渲染到屏幕上的内容。因此,如果我们通过将图像附加到帧缓冲区来指定要渲染的图像,这对我来说是有意义的。显然,我误解了一些基本的东西,因为在我描述的内容中,目标是屏幕,而其他一切都是源。

    帧缓冲区源与渲染的内容无关。可以将多个渲染目标附加到每个帧缓冲区并在它们之间切换。但是,这实际上是不需要的,它与渲染步骤本身无关,除非您使用多个过程或需要其他渲染到纹理的内容


    我将跳过OpenGL学习的这一部分,直接从VBO和着色器开始,此时只需为帧缓冲区使用一些模板。稍后您可能需要它们,但现在不需要。

    帧缓冲区源与您渲染的内容无关。可以将多个渲染目标附加到每个帧缓冲区并在它们之间切换。但是,这实际上是不需要的,它与渲染步骤本身无关,除非您使用多个过程或需要其他渲染到纹理的内容


    我将跳过OpenGL学习的这一部分,直接从VBO和着色器开始,此时只需为帧缓冲区使用一些模板。稍后您可能需要它们,但现在不需要。

    您的程序通过执行使OpenGL将片段光栅化到帧缓冲区的操作来渲染到帧缓冲区中

    但是,帧缓冲区不会显示在任何地方,除非您按照文档中的说明将其发送到目标

    它有点像这样(非常非常粗糙,从我的头顶):


    通过执行使OpenGL将片段光栅化到帧缓冲区的操作,程序将渲染到帧缓冲区

    但是,帧缓冲区不会显示在任何地方,除非您按照文档中的说明将其发送到目标

    它有点像这样(非常非常粗糙,从我的头顶):


    目标是正确的。帧缓冲区渲染到内存区域,该区域稍后将用于合成到屏幕(renderbuffer)或用作辅助渲染过程中的纹理。

    目标正确。帧缓冲区渲染到内存区域,该区域稍后将用于合成屏幕(renderbuffer)或用作辅助渲染过程中的纹理。

    帧缓冲区附件首先是写入的目标,然后是读取的源。请注意,当规范称为“目标”时,不管实际操作如何,正在处理或更改的通常是活动对象。

    帧缓冲区附件首先是写入的目标,然后是读取的源。请注意,当规范中说“target”时,不管实际操作如何,正在处理或更改的通常是活动对象

    显然,我误解了一些基本的东西,因为在我描述的内容中,目标是屏幕,而其他一切都是源

    是的,你基本上误解了什么。当您不想将内容渲染到屏幕,而是要渲染到某些屏幕外图像时,可以使用帧缓冲区对象。例如,一个texutre,或者一些后来正在进行后处理的图像。如果只想渲染到屏幕,则不需要FBO

    因此,如果我们通过将图像附加到帧缓冲区来指定要渲染的图像,这对我来说是有意义的

    不可以。帧缓冲区对象不是图像内容的来源,而是一个“画布”,一个可以绘制的接收器。或者更准确地说是实际画布的“框架”,其中目标是要绘制的画布

    显然,我误解了一些基本的东西,因为在我描述的内容中,目标是屏幕,而其他一切都是源

    是的,你基本上误解了什么。当您不想将内容渲染到屏幕,而是要渲染到某些屏幕外图像时,可以使用帧缓冲区对象。例如,一个texutre,或者一些后来正在进行后处理的图像。如果只想渲染到屏幕,则不需要FBO

    因此,如果我们通过将图像附加到帧缓冲区来指定要渲染的图像,这对我来说是有意义的

    不可以。帧缓冲区对象不是图像内容的来源,而是一个“画布”,一个可以绘制的接收器。或者更准确地说是实际画布的“框架”,其中目标是要绘制的画布

    +----------+   +--------+   +---------------------+   +----------------------+
    |draw calls|---|pipeline|---|pixels in framebuffer|---|pixels in renderbuffer|
    +----------+   +--------+   +---------------------+   +----------------------+