OpenGL渲染是在渲染管道中进行还是在渲染管道完成后进行?

wz1wpwve  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(140)

OpenGL什么时候将对象渲染到帧缓冲区?渲染是在渲染管道完成后进行的还是在渲染管道中进行的(如果是,它在管道中的哪个阶段进行渲染)。我最近问了几个人,但得到了不同的答案,所以我不确定。

wsewodh2

wsewodh21#

“渲染管道”是OpenGL渲染器中不同阶段的名称。可以将其视为工厂中的装配线。每一段数据都要经过渲染管道中的多个步骤,并可能与其他数据组合在一起。当所有数据都处理完毕时,渲染就完成了。
如果没有完整的渲染管道,您甚至无法开始渲染。
“OpenGL何时写入帧缓冲区?”是一个有趣的问题。通常,当你发出glDrawElements()这样的绘制命令时,这个命令会被存储在命令缓冲区中,并在稍后的时间点进行处理。如果你只是单独调用glDrawElements(),你不会知道渲染何时发生,但有办法可以找到。

  • 如果在渲染后创建围栏,则可以通过查询围栏来了解渲染何时完成。请参见glClientWaitSync
  • 如果你调用glFinish,它会一直等到渲染完成。参见glFinish
  • 某些命令会等待渲染完成,这是一个副作用。例如,glReadPixels在阅读客户端内存时,直到先前的渲染操作完成后才会返回。

相关问题