4

我试图以层的形式了解 Mac 上与 OpenGL 框架集成相关的一些事情。基本上,当我想了解 OS X 中存在的 3D 技术以及哪一层是 OpenGL 的实际实现层时。

通过阅读苹果文档,以下是我迄今为止所理解的:

1.NSOpenGLContext 对象包装了一个低级的、特定于平台的Core OpenGL (CGL) 上下文。

= 这清​​楚地表明 NSOpenGL 使用了 CGL。

2.AGL(Apple 图形库)API 是 Apple 在 Mac OS X 中实现 OpenGL 的一部分。

= 那么,AGL 和 CGL 有什么关系吗?

3.CGL(Core OpenGL)是Apple实现OpenGL的最低级编程接口。

= 这是否意味着标准 OpenGL API 只是 CGL 的包装?

4.CoreAnimation 似乎是 Core Graphics、Open-GL 和 Quick-time 的组合。但是我不确定它在它下面使用了什么,我的意思是实际的实现层,还是 CGL 吗?

事情对我来说并不完全清楚。我仍在阅读,过去我曾问过一些相关的问题,但知识不完整。

如果有人能分享他对物质的理解,我将不胜感激。

4

1 回答 1

8

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 小部件,请使用它。

于 2012-01-31T13:27:51.487 回答