gpt4 book ai didi

c++ - OpenGL 是否保证 GL_LINES 或 GL_LINE_STRIP 的光栅化顺序?

转载 作者:行者123 更新时间:2023-11-30 02:17:20 25 4
gpt4 key购买 nike

如果我使用 GL_LINESGL_LINE_STRIP 渲染多段线,我是否可以假设具有低顶点索引的线段首先绘制到帧缓冲区?比如,当我使用顶点 v0、v1、v2 指定线带时,我是否可以假定先渲染线段 v0v1,然后渲染 v1v2?

最佳答案

OpenGL 标准的定义理念是,一切都将表现得“好像”一切都按特定顺序执行。因此,它为几乎所有内容定义了严格的顺序。

当谈到渲染命令中的顶点和图元时,是的,有一个顺序。具体来说,一切都按照您提交数据的顺序进行。在 glDrawArrays/Elements 调用中从头到尾依次获取每个顶点。随着顶点被转换为图元,该程序集对生成的图元进行排序。图元是按照遇到它们的事件顶点的顺序生成的。

或者更确切地说,OpenGL 的行为“好像”遵循了提交顺序。然而,事实是,您唯一可以判断这是否属实的地方是它们的片段被放入帧缓冲区的顺序。因此,实现可以异步处理基元,然后根据提交顺序混合来自这些基元的各个像素数据。

但这些都是实现细节。重点是,如果您在同一个绘制调用中渲染 2 条线,并且它们重叠,并且您启用了混合,OpenGL 保证它们将被渲染为好像由前两个顶点形成的线数组中的完全渲染,然后渲染由后面的顶点(ices)形成的线。因此,它们将按顺序混合。

在 OpenGL 中唯一明确无序的渲染操作是 incoherent memory accesses以及 tessellation 生成的图元顺序.后者只允许它们在那个补丁中是无序的;来自一个镶嵌面片的所有图元必须(好像)在来自后面的图元的任何图元之前渲染。

关于c++ - OpenGL 是否保证 GL_LINES 或 GL_LINE_STRIP 的光栅化顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53715571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com