开放式渲染是在渲染管道中还是在渲染管道完成后发生?

发布于 2025-01-21 15:04:29 字数 107 浏览 0 评论 0 原文

OpenGL什么时候将我的对象渲染到Framebuffer?在渲染管道完成或在渲染管道中发生后,渲染是否发生在(如果是的,则在管道中渲染的阶段)。我最近问了几个人,但我得到了不同的答案,所以我不确定。

When does OpenGL render my object to the framebuffer? Does the rendering happen after the rendering pipeline is complete or does it happen in the rendering pipeline (if so, which stage does it render in the pipeline). I recently asked a few people but I got different answers so I am unsure.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

童话里做英雄 2025-01-28 15:04:29

“渲染管道”是OpenGL渲染器中不同阶段的名称。将其视为工厂中的装配线。每个数据都通过渲染管道中的多个步骤,并且可以与其他数据结合使用。处理所有数据后,渲染完成。

如果没有完整的渲染管道,您甚至无法开始渲染。

“ OpenGL什么时候写给Framebuffer?”是一个有趣的问题。事实证明,通常,当您发出 gldrawelements()之类的draw命令时,此命令将存储在命令缓冲区中并在以后的时间点进行处理。如果您只是单独调用 gldrawelements(),您将不知道何时发生渲染,但是有一些方法可以找出答案。

  • 如果您在渲染后创建围栏,可以通过查询围栏来确定何时完成渲染。参见

  • ” > glfinish ,它将等待启用渲染。参见 glfinish
  • 某些命令将等待渲染作为副作用完成。例如,

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 call glDrawElements() 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文