2012-01-31 106 views
3

我想了解Mac上與OpenGL框架集成有關的幾件事情,它們以層的形式出現。基本上,當我想了解OS X中存在的3D技術以及OpenGL的實際實現層是哪一層時。CGL vs AGL vs OpenGL vs NSOpenGL vs CoreAnimation(CALayer)

從閱讀蘋果文檔,下面是我迄今瞭解:

1.NSOpenGLContext對象封裝了一個低級別的,特定於平臺的OpenGL的核心(CGL)上下文。

=這表明NSOpenGL使用CGL。

2,AGL(蘋果圖形庫)API是Mac OS X的蘋果實施的OpenGL的一部分

=那麼,這是否AGL和CGL以任何方式有關?

3.CGL(Core OpenGL)是Apple OpenGL實現的最低級編程接口。

=這是否意味着標準OpenGL API只是CGL的封裝?

4.CoreAnimation似乎是Core Graphics,Open-GL和Quick-time的組合。但我不確定底層使用什麼,我的意思是實際的實現層,是CGL嗎?

事情並不完全清楚。儘管如此,我仍然在閱讀,過去我曾詢問過有關question,但知識不完整。

如果有人能分享他對物質的理解,我將非常感激。

+0

我的理解是,AGL已被棄用(或至少沒有積極開發)以支持CGL。 – 2012-01-31 12:36:06

+0

這意味着,他們是獨立的技術? – MacGeek 2012-01-31 12:40:18

回答

7

NSOpenGLContext,AGL和CGL都是用於設置可以繪製的OpenGL上下文的API。

使用NSOpenGLContext,除非你已經知道你有一個理由不這樣做。

如果您正在編寫Carbon應用程序,或者您需要與Mac OS 9兼容(截至2012年,基本上意味着:請勿),請使用AGL。

AGL和NSOpenGLContext都是在CGL之上實現的。但是,並非CGL的所有必要部分實際上都是公共API。上次我查看了CGL API中唯一允許創建全屏OpenGL上下文的公共部分。如果你想在一個窗口中使用OpenGL,或者想要在OpenGL上顯示對話框或某些NSViews的選項,則可能不能使用CGL。

CoreAnimation是一個(主要是UI)動畫框架;您可以直接使用CoreAnimation而不使用OpenGL。我從來沒有用過它,但我認爲它也允許你爲動畫層創建一個OpenGL上下文。如果您已經有其他原因使用CoreAnimation,或者想要以創新的方式組合OpenGL圖形和Mac GUI小部件,請使用它。

+0

謝謝。我瞭解了大部分內容,並且我必須學習核心動畫,以便了解核心動畫的描述。我仍然有關於OpenGL和CGL如何交互的問題。 CGL是OpenGL for Mac的低級實施嗎?我的意思是分層次的層次。 – MacGeek 2012-01-31 13:51:58

+3

「OpenGL」本身假定您已經擁有OpenGL上下文。爲了能夠在OpenGL上做任何事情,你還需要一個(通常是平臺特定的)方法來獲得這樣的上下文。NSOpenGLContext,AGL和CGL就是這樣。假設CGL是OpenGL for Mac的必不可少的伴侶,並且NSOpenGLContext和AGL建立在CGL之上。 – wolfgang 2012-01-31 15:50:16

+0

要在CoreAnimation中使用OpenGL,您可以使用[CAOpenGLLayer](http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/CAOpenGLLayer_class/Introduction/Introduction.html)。 – DarkDust 2012-01-31 15:57:54