2012-07-10 56 views
5

3D API中的绘制三角形的顺序是否保证与其在索引缓冲区中的顺序相同?DirectX/OpenGL中的三角形绘制顺序

例如,如果在单个绘图调用中有两个重叠的三角形,并且深度测试被禁用,那么第一个或第二个三角形最终是否可见?

或者我是否需要发出单独的绘图调用以确保第二个三角形出现在第一个顶部?

回答

6

在OpenGL中,顺序确实是保留的,所以可以使用画家算法,例如在渲染半透明几何时。

Direct3D我不确定,但我会说同样适用于那里。

+0

谢谢!你有链接到一些官方文件,说订单将被保留?将平铺的架构(如Adreno或Xbox GPU)在多个图块中单独完成绘图时不会影响该架构? – kaalus 2012-07-10 11:01:39

+1

@kaalus:我可以保证排序,尽管我不能在我的生活中找到DX的参考。 GL至少在4.2核心档案的p115中提供参考。平铺不会影响它。 – Bahbar 2012-07-10 11:21:34

+1

@Bahbar事实上,它只是顺便提及。下面是实际的文字:“相同着色器类型的调用的相对顺序是未定义的,即使在基元B之前指定了基元A,在着色器B上工作时,由着色器发出的存储可能在原始A的存储之前完成。这甚至适用于片段着色器;而片段着色器输出以原始顺序写入帧缓冲区,片段着色器调用执行的存储不是。“ – kaalus 2012-07-10 15:54:53