2011-08-29 43 views
1

我想弄清楚CGLOpenGL on Mac平臺之間的關係。CGL vs Mac上的OpenGL

關於上下文更具體。他們分享情境嗎?如果是,如何?請給我一個鏈接到一些相關的例子。

如果不是,那麼在使用OpenGL的Core Animation應用程序中是否有兩個上下文工作?

我非常困惑的Mac使用OpenGL。有人可以澄清嗎?

回答

0

CGL是Mac上的OpenGL的底層接口。如果您正在編寫OpenGL Mac應用程序,您可能不希望使用它。我目前正在爲XCode 4創建直觀的OpenGL Mac應用程序模板,但同時您可以看看我使用OpenGL製作的pong克隆https://github.com/mk12/Pong-Ultimate。它使用NSOpenGL,這是一個更高層次的OpenGL的Cocoa接口。

您也可能會發現Apple文檔有幫助:http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html

+0

我正在處理需要理解CGL和OpenGL交互的東西。到目前爲止,我已經能夠理解OpenGL和CGL是兩種不同的框架,但他們可以共享上下文。核心動畫應用程序不使用OpenGL。他們利用CGL。如果應用程序直接使用OpenGL,那麼只使用openGL框架,否則使用CGL。 – MacGeek

+0

@Rahul:所以你說你想知道什麼時候框架使用CGL與OpenGL進行交互,以及什麼時候不用?只是想知道,爲什麼?如果Core Animation使用CGL,那麼顯然它也必須使用OpenGL,因爲這是CGL的唯一目的。 – mk12

+0

這就是我用來思考。但情況並非如此。 CGL不使用OpenGL。那他們有什麼關係?那就是我被卡住的地方。事實上,我很難找出Dock&Finder的功能。他們不使用CGL也不使用OpenGL。你可以用nm工具檢查符號鏈接。 – MacGeek

3

CGL設置適合OpenGL渲染的設備特定上下文。分別比較Windows和X上的wgl和xgl。 CGL瞭解如何查詢圖形硬件的像素格式,然後瞭解如何設置和配置上下文(例如雙緩衝或單緩衝,分辨率深度,模板,累積緩衝區等)。但它沒有提供在這種情況下繪製的功能。一旦用CGL創建了上下文,就可以使其成爲最新的,然後可以調用OpenGL在該上下文中進行渲染。

在Core Graphics中(不要將它與CGL混淆),上下文初始化和繪製到上下文中都由同一個框架處理。但是因爲OpenGL是一個開放標準,並被設計爲跨平臺的,所以渲染功能和設備上下文功能已經被抽象爲獨立的框架。