带三角形条的圆圈

2023-12-04

我一直在尝试在 OpenGL 中创建一个圆圈,但我不能使用三角形扇形,因为我读到它们在 directx 中不再可用,而且我还将进行 directx 调用。

我不太明白三角形带是如何工作的。我所有的实现都有漏洞或奇怪的怪癖,任何人都可以帮助我,我怎样才能以最好的方式实现它?

另外,三角形条带和单独的三角形之间是否确实存在性能差异,例如 10 个圆圈,每个圆圈有 1000 个三角形。会有很大的不同吗?


用三角形带指定圆的一种方法如下:

for each step
    add next position on circle
    add circle center

这将包括圆的中心位置。另一种不包括中心的方法是:

add left most vertex
for each phi in (-PI/2, Pi/2) //ommit the first and last one
    x = r * sin(phi)
    y = r * cos(phi)
    add (x, y)
    add (x, -y)
add right most vertex

您可能需要根据背面剔除设置调整循环

拓扑需要不同数量的顶点。对于三角形列表,10 个圆 á 1000 个三角形需要 30,000 个顶点。对于三角形带,每个圆需要 1002 个顶点,因此总共需要 10,020 个顶点。这几乎小了三倍,传输到 CPU 时应该会更快一点。这是否反映在 FPS 中取决于几件事。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带三角形条的圆圈 的相关文章