2010-05-30 85 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