2010-05-30 83 views
10

圆圈是基本的几何实体之一。然而,对于这一点,没有在OpenGL中定义的基元,如线条或多边形。为什么这样?对于这一直包含自定义标题有点恼人!为什么OpenGL中没有圆或椭圆图元?

任何具体的理由忽略它?

+9

这样我们可以要求人们在技术访谈中写一个循环函数。 – 2010-05-30 15:59:36

回答

17

元虽然社交圈也基本形状它们并不像基本的点,线或三角形,当涉及到光栅化。 3D加速的第一张图形卡被设计用来做一件很好的事情,光栅化三角形(线条和点,因为它们是微不足道的)。添加更复杂的形状会使该卡更加昂贵,同时仅添加少量功能。

但还有另一个不包括圆/椭圆的原因。他们不连接。您无法建立3D模型,也无法将三角形连接到它们,而无需添加间隙或重叠部分。因此,要使圆形变得有用,还需要其他形状(如曲线和其他更高级的曲面(例如NURBS))。圆圈本身只能用作“大点”,也可以用四边形和圆形形状的纹理或三角形来完成。

如果您对圆圈使用“自定义标题”,您应该意识到这些可能会创建一个形成“圆圈”的三角形模型。

+0

你能解释一下你的意思吗?“自定义标题”? – 2010-05-31 09:08:49

+1

这是来自问题。我不知道Ram究竟是什么意思,但我猜这是一个带有一些OpenGL实用程序函数的库。 – 2010-05-31 09:36:07

+0

* paw-face *对,我应该先阅读这个问题,嗯?谢谢。 – 2010-05-31 10:22:43

2

由于历史上,视频卡已呈现点,线和三角形。

您可以使用足够短的行计算曲线,以便视频卡不必。

+0

+1不公平downvote。这是一个有效的答案。 – 2010-05-31 09:08:15

0

你总是可以使用gluSphere(如果三维形状是你正在寻找的)。

如果你想绘制一个二维圆圈,你会被自定义的方法所困住。我会和一个三角迷一起去。

的原语被称为是有原因的:)

1

说这取决于分辨率

2

因为图形卡操作三维点,线和三角形。圆需要曲线或样条曲线。它不能完美地用一个“正常”的3D基元来表示,只能近似为一个N-gon(所以它看起来就像是在一定距离上的一个圆圈)。如果你想要一个圈子,自己写程序(这不难)。可以将它绘制成N-gon,或者制作一个正方形(2个三角形),并使用片段着色器从中剪出一个圆圈(可以通过这种方式获得完美的圆形)。

+1

+1。为了保持悬垂性,片段着色器仍然只是靠近屏幕上像素的圆圈。不是一个完美的圆圈。 = P – 2010-05-31 09:09:43

+0

@Xavier Ho:尽管如此,使用片段着色器,您几乎可以在距离圆的任何距离(非常近的距离处都可能存在精度错误)获得完美逼近。将一些反锯齿投入计算,并且没有什么可抱怨的。 – SigTerm 2010-05-31 12:30:24

+0

“完美近似” - 我称为矛盾!是的,你会是对的。 – 2010-05-31 12:33:09