2010-06-14 71 views
2

我使用OpenGL并被告知我应该在轮廓的每个顶点绘制圆以获得平滑度。我试过这个,效果很好。问题是速度。它削弱了我的应用程序在每个顶点绘制一个圆圈。我不知道除了圆圈以外,还有其他什么方法可以解决我的轮廓异常问题,但是使用显示列表和尝试使用顶点数组都是非常慢的。由于为多边形轮廓绘制圆圈的最有效方法

见:Edges on polygon outlines not always correct

+0

如果您被告知SO,请提供该问题的链接,因为我不明白您的问题中的原始问题;) – zerm 2010-06-14 22:07:02

+0

@zerm请参阅编辑。 – jmasterx 2010-06-14 22:14:49

+0

当你说“尝试使用顶点数组”时,你是如何使用它们的?一个VA包含一个具有多个glTranslates()/ glDrawElements()的单个圆或一个具有一个glDrawElements()调用的大型VA? – genpfault 2010-06-14 22:16:09

回答

2

一个(也许是太花哨),另一种方法是绘制界定圆一个多边形(比如,四),和然后使用片段程序丢弃片段。这并不是完全微不足道的,但我敢打赌这是最快的方法。

如果从片段中心到圆心的距离大于所需半径,您只需将圆参数传递给片段程序并丢弃片段即可。

+0

是否有关于性能的基准? – SOUser 2014-08-22 06:16:08

0

你见过this文章?

..或者如果你有机会到GL实用程序库,你可以使用gluDisk

+0

是的,我曾试用DL和Vertex Arrays – jmasterx 2010-06-14 22:12:10

+0

GLUDisks是否超高效? – jmasterx 2010-06-14 22:17:43

+0

我不确定 - 我玩OGL已经很久了。为什么不尝试呢? :-) – 2010-06-14 22:38:03