我试图通过层的形式了解Mac上与OpenGL框架集成相关的一些事情。基本上当我想了解OS X中存在的3D技术以及哪个层是OpenGL的实际实现层时。
从阅读苹果文档开始,以下是我目前所理解的内容:
1.NSOpenGLContext对象包装一个低级的,特定于平台的Core OpenGL(CGL)上下文。
=这表明NSOpenGL使用了CGL。
2. AGL(Apple Graphics Library)API是Mac OS X中Apple实现OpenGL的一部分。
=那么,AGL和CGL是否以任何方式相关?
3.CGL(Core OpenGL)是Apple实现OpenGL的最低级编程接口。
=这是否意味着标准OpenGL API只是CGL的包装?
4.CoreAnimation似乎是Core Graphics,Open-GL和Quick-time的组合。但是我不确定它下面使用了什么,我的意思是实际的实现层,它又是CGL吗?
事情对我来说并不完全清楚。我仍然在阅读,我在过去曾问过一些相关的question,但知识不全。
如果有人可以分享他对事情的理解,我真的很感激。
答案 0 :(得分:7)
NSOpenGLContext,AGL和CGL都是用于设置可以绘制的OpenGL上下文的API。
使用NSOpenGLContext,除非您已经知道有理由不这样做。
如果您正在撰写Carbon应用程序,或者您需要与Mac OS 9兼容,请使用AGL(截至2012年,这基本上意味着:不要)。
AGL和NSOpenGLContext都是在CGL之上实现的。但是,并非CGL的所有必要部分实际上都是公共API。上次我检查了CGL API的唯一公共部分,其中允许您创建全屏OpenGL上下文。如果你想在一个窗口中使用OpenGL,或者你想要在OpenGL上显示对话框或一些NSView的选项,你可能无法使用CGL。
CoreAnimation是(主要是UI)动画的框架;您可以直接使用CoreAnimation而不使用OpenGL。我自己从未使用它,但我认为它还允许您为动画层创建OpenGL上下文。如果您已经有其他理由使用CoreAnimation,或者您想以创造性的方式组合OpenGL图形和Mac GUI小部件,请使用它。