开放式渲染是在渲染管道中还是在渲染管道完成后发生?
OpenGL什么时候将我的对象渲染到Framebuffer?在渲染管道完成或在渲染管道中发生后,渲染是否发生在(如果是的,则在管道中渲染的阶段)。我最近问了几个人,但我得到了不同的答案,所以我不确定。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
OpenGL什么时候将我的对象渲染到Framebuffer?在渲染管道完成或在渲染管道中发生后,渲染是否发生在(如果是的,则在管道中渲染的阶段)。我最近问了几个人,但我得到了不同的答案,所以我不确定。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(1)
“渲染管道”是OpenGL渲染器中不同阶段的名称。将其视为工厂中的装配线。每个数据都通过渲染管道中的多个步骤,并且可以与其他数据结合使用。处理所有数据后,渲染完成。
如果没有完整的渲染管道,您甚至无法开始渲染。
“ OpenGL什么时候写给Framebuffer?”是一个有趣的问题。事实证明,通常,当您发出
gldrawelements()
之类的draw命令时,此命令将存储在命令缓冲区中并在以后的时间点进行处理。如果您只是单独调用gldrawelements()
,您将不知道何时发生渲染,但是有一些方法可以找出答案。如果您在渲染后创建围栏,可以通过查询围栏来确定何时完成渲染。参见
某些命令将等待渲染作为副作用完成。例如,
The "rendering pipeline" is the name for the different stages in the OpenGL renderer. Think of it like an assembly line in a factory. Each piece of data goes through multiple steps in the rendering pipeline, and may be combined with other data. When all data is processed, rendering is complete.
You can't even start rendering without a complete rendering pipeline.
"When does OpenGL write to the framebuffer?" is an interesting question. It turns out that normally, when you issue a draw command like
glDrawElements()
, this command is stored in a command buffer and processed at a later point in time. If you just callglDrawElements()
by itself, you won't know when the rendering happens, but there are ways to find out.If you create a fence after rendering, you can find out when rendering is complete by querying the fence. See glClientWaitSync
If you call
glFinish
, it will wait untill rendering is complete. See glFinish.Certain commands will wait for rendering to finish as a side effect. For example, glReadPixels, when reading into client memory, will not return until previous rendering operations are complete.