我目前正在尝试学习使用统一缓冲区和实例渲染。
我知道两者的概念,但是在每个教程中我都读过“ renderpass”或“ draw-call”这个词。
有人可以向我解释编程术语的含义吗?是每次绘制单个对象,绘制网格吗?
是每次执行着色器吗?
那么渲染通道到底是什么?和抽奖电话一样吗?
可能基本上是这个吗?:
Gl_Color(xyz); gl_uniform("a",1); gl_uniform("a",1); gl_uniform("a",1); //I know this is deprected as balls, but just to help me understand Gl_Begin(GL_VERTEX_STRIP); GL_Vertex(xyz); GL_TEXCOORD(xy); GL_End();
Nicol Bolas.. 6
“绘图调用”一词的含义恰恰是它所说的:调用表格的gl*Draw*
任何OpenGL函数。这些命令将导致顶点被渲染,并启动整个OpenGL渲染管线。
因此,如果您通过一个glDrawElementsInstanced
调用绘制5000个实例,那仍然只是一个绘制调用。
术语“渲染通道”更为模糊。最常见的含义是指多遍渲染技术。
在多遍技术中,您多次渲染相同的“对象”,并且每次渲染对象时都要进行单独的计算,并累积到最终值中。具有特定状态集的对象的每次渲染都称为“通过”或“渲染通过”。
请注意,渲染过程不一定是绘制调用。对象可能需要多次绘制调用才能呈现。尽管这通常比进行一次绘制调用要慢,但出于各种原因可能有必要。
像这样的技术通常是前向渲染如何在多个灯光下工作的方式。着色器通常设计为仅处理单个灯光。因此,要在一个对象上渲染多个灯光,您需要渲染该对象多次,将灯光特征更改为影响该对象的下一个灯光。因此,每一遍都代表一盏灯。
随着更强大的硬件和延迟渲染技术的出现,对象上的多遍渲染已过时。尽管延迟渲染的确会多次通过;通常只是在屏幕上方,而不是单个对象。
这只是“渲染通道”的一种定义。根据上下文,您正在查看的教程可能正在谈论其他内容。
“绘图调用”一词的含义恰恰是它所说的:调用表格的gl*Draw*
任何OpenGL函数。这些命令将导致顶点被渲染,并启动整个OpenGL渲染管线。
因此,如果您通过一个glDrawElementsInstanced
调用绘制5000个实例,那仍然只是一个绘制调用。
术语“渲染通道”更为模糊。最常见的含义是指多遍渲染技术。
在多遍技术中,您多次渲染相同的“对象”,并且每次渲染对象时都要进行单独的计算,并累积到最终值中。具有特定状态集的对象的每次渲染都称为“通过”或“渲染通过”。
请注意,渲染过程不一定是绘制调用。对象可能需要多次绘制调用才能呈现。尽管这通常比进行一次绘制调用要慢,但出于各种原因可能有必要。
像这样的技术通常是前向渲染如何在多个灯光下工作的方式。着色器通常设计为仅处理单个灯光。因此,要在一个对象上渲染多个灯光,您需要渲染该对象多次,将灯光特征更改为影响该对象的下一个灯光。因此,每一遍都代表一盏灯。
随着更强大的硬件和延迟渲染技术的出现,对象上的多遍渲染已过时。尽管延迟渲染的确会多次通过;通常只是在屏幕上方,而不是单个对象。
这只是“渲染通道”的一种定义。根据上下文,您正在查看的教程可能正在谈论其他内容。