Opengl 解释不同类型的绘图缓冲区

Opengl 解释不同类型的绘图缓冲区,opengl,glsl,Opengl,Glsl,为什么我们需要所有这些缓冲区: 左前左,右前, 左后、右后、前、后、左, 右边,前面和后面,还有奥西,我在哪里 介于0和GL_辅助_缓冲区之间 GL_前面和GL_后面对我有意义,但对其他人没有意义。有人能举一个例子,当我们要渲染时说GL_BACK_LEFT吗 当我说GL_FRONT_ABD_BACK时,它是否渲染到前后缓冲区的所有左侧和右侧(即总共4个缓冲区)。将同一图像渲染到所有4个缓冲区的用例是什么?有什么例子吗?前面和后面的区别指的是双缓冲——通常一个程序先画出后面的缓冲区,然后把它换到前

为什么我们需要所有这些缓冲区:

左前左,右前, 左后、右后、前、后、左, 右边,前面和后面,还有奥西,我在哪里 介于0和GL_辅助_缓冲区之间

GL_前面和GL_后面对我有意义,但对其他人没有意义。有人能举一个例子,当我们要渲染时说GL_BACK_LEFT吗


当我说GL_FRONT_ABD_BACK时,它是否渲染到前后缓冲区的所有左侧和右侧(即总共4个缓冲区)。将同一图像渲染到所有4个缓冲区的用例是什么?有什么例子吗?

前面和后面的区别指的是双缓冲——通常一个程序先画出后面的缓冲区,然后把它换到前面,这样一个完整的帧总是呈现给用户

左右区分用于立体渲染(使用稍微不同的视点渲染左眼和右眼的图像)

当然,大多数立体渲染硬件也支持双缓冲,从而实现GL_FRONT/BACK_LEFT/RIGHT的组合

实际可用的缓冲区取决于您请求的上下文和(当然)底层系统的功能。GL_FRONT可能与GL_FRONT_LEFT和GL_FRONT_RIGHT中的一个或另一个具有相同的定义值,GL_BACK也具有相同的定义值,尽管没有保证


GL_AUXi缓冲区是特定于实现的。我怀疑它们在可用时通常用于覆盖平面。

前后的区别指的是双重缓冲——通常一个程序绘制到后缓冲区,然后交换到前缓冲区,这样一个完整的帧总是呈现给用户

左右区分用于立体渲染(使用稍微不同的视点渲染左眼和右眼的图像)

当然,大多数立体渲染硬件也支持双缓冲,从而实现GL_FRONT/BACK_LEFT/RIGHT的组合

实际可用的缓冲区取决于您请求的上下文和(当然)底层系统的功能。GL_FRONT可能与GL_FRONT_LEFT和GL_FRONT_RIGHT中的一个或另一个具有相同的定义值,GL_BACK也具有相同的定义值,尽管没有保证


GL_AUXi缓冲区是特定于实现的。我怀疑它们通常用于叠加平面(如果可用)。

缓冲区的左/右区分用于立体显示。对于双缓冲立体声,您可以将左眼的图像渲染到GL_BACK_left buffer中,将右眼的图像渲染到GL_BACK_right buffer中,然后交换缓冲区

在立体模式下,如果要同时渲染相同的对象到左和右,则使用“GL_BACK”。这是相当罕见的

你说的前后对。渲染到前端缓冲区早已过时,而且只在特殊情况下有用。一个典型的例子是使用OpenGL在已经显示的框架上绘制特殊的光标,如十字光标。同时渲染正面和背面的效果就更差了。我现在想不出一个好的用例


辅助缓冲区长期以来也被弃用。我相信它们是用于渲染需要额外颜色缓冲区的效果的。现在,您也可以使用FBO来实现同样的目的。

缓冲区的左/右区分用于立体声显示。对于双缓冲立体声,您可以将左眼的图像渲染到GL_BACK_left buffer中,将右眼的图像渲染到GL_BACK_right buffer中,然后交换缓冲区

在立体模式下,如果要同时渲染相同的对象到左和右,则使用“GL_BACK”。这是相当罕见的

你说的前后对。渲染到前端缓冲区早已过时,而且只在特殊情况下有用。一个典型的例子是使用OpenGL在已经显示的框架上绘制特殊的光标,如十字光标。同时渲染正面和背面的效果就更差了。我现在想不出一个好的用例


辅助缓冲区长期以来也被弃用。我相信它们是用于渲染需要额外颜色缓冲区的效果的。现在,你会出于同样的目的使用固定基地运营商。

1后续问题。渲染到后缓冲区,然后交换前缓冲区和后缓冲区之间的区别是什么。vs渲染到前缓冲区,然后交换前缓冲区和后缓冲区。后者会显示一些工件吗?@viktorzeid:在没有接收到显式绘图命令的后台缓冲区中交换会产生未定义的结果,即任何东西都可能显示出来。@viktorzeid正如Reto所说,直接渲染到前台缓冲区毫无意义。前缓冲区是屏幕显示的内容,而后缓冲区是在帧完成之前渲染到的位置。@datenwolf,谢谢,但我想我知道这两件事。但我的问题更像是,如果我故意先渲染到前端缓冲区,然后交换。我更感兴趣的是,如果GPU速度慢,用户在“交换前”会看到什么。。我们将看到部分渲染的几何体,或者一次绘制调用所要求的渲染量。@viktorzeid:缓冲区交换后,内容未定义。在交换之前,你可以在创建图形时瞥见它;或者,如果图形系统正在使用合成,并且需要glFinish或缓冲区交换。1跟进问题。渲染到后缓冲区,然后交换前缓冲区和后缓冲区之间的区别是什么。vs渲染到前缓冲区,然后交换前缓冲区和后缓冲区。后者会显示一些工件吗?@viktorzeid:在没有接收到显式绘图命令的后台缓冲区中交换会产生未定义的结果,即任何东西都可能显示。@viktorzeid如Reto所说,