Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c CGL vs AGL vs OpenGL vs NSOpenGL vs CoreAnimation(CALayer)_Objective C_Macos_Opengl_Core Animation_Cglayer - Fatal编程技术网

Objective c CGL vs AGL vs OpenGL vs NSOpenGL vs CoreAnimation(CALayer)

Objective c CGL vs AGL vs OpenGL vs NSOpenGL vs CoreAnimation(CALayer),objective-c,macos,opengl,core-animation,cglayer,Objective C,Macos,Opengl,Core Animation,Cglayer,我试图了解Mac上与OpenGL框架集成相关的几件事,即层的形式。基本上,当我想了解OSX中的3D技术,以及哪一层是OpenGL的实际实现层时 通过阅读苹果文档,以下是我迄今为止的理解: 1.NSOpenGLContext对象包装了一个低级的、特定于平台的核心OpenGL(CGL)上下文 =这表明NSOpenGL使用CGL 2.AGL(苹果图形库)API是苹果在Mac OS X中实现OpenGL的一部分 =那么,AGL和CGL是否有任何关联 3.CGL(核心OpenGL)是Apple实现Open

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

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

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

=这表明NSOpenGL使用CGL

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

=那么,AGL和CGL是否有任何关联

3.CGL(核心OpenGL)是Apple实现OpenGL的最低级别编程接口

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

CoreAnimation似乎是核心图形、OpenGL和快速时间的组合。但我不确定它下面用的是什么,我是说实际的实现层,它又是CGL吗

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


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

NSOpenGLContext、AGL和CGL都是用于设置OpenGL上下文的API,您可以将其引入其中

使用NSOpenGLContext,除非您已经知道有理由不这样做

如果您正在编写碳应用程序或需要与Mac OS 9兼容,请使用AGL(从2012年起,这基本上意味着:不要)

AGL和NSOpenGLContext都是在CGL之上实现的。然而,并非CGL的所有必要部分实际上都是公共API。上次我检查时,CGLAPI中唯一允许您创建全屏OpenGL上下文的公共部分。如果您希望在窗口中显示OpenGL,或者希望在OpenGL的顶部显示对话框或某些NSView,则可能无法使用CGL


CoreAnimation是(主要是UI)动画的框架;您可以在不直接使用OpenGL的情况下使用CoreAnimation。我自己从未使用过它,但我认为它还允许您为动画层创建OpenGL上下文。如果您已经有其他理由使用CoreAnimation,或者如果您想以创造性的方式将OpenGL图形和Mac GUI小部件结合起来,请使用它。

我的理解是,AGL不赞成(或至少没有积极开发)CGL。这意味着,它们是独立的技术?谢谢。我理解了大部分内容,为了理解您对核心动画的描述,我必须学习核心动画。我仍然对OpenGL和CGL如何交互有疑问。CGL是OpenGL for Mac的低级实现吗?我的意思是在层次结构方面,“OpenGL”本身假设您已经有了一个OpenGL上下文。为了能够用OpenGL做任何事情,您还需要一种(通常是特定于平台的)方法来获取这样的上下文。NSOpenGLContext、AGL和CGL就是这样的方式。假设CGL是OpenGL for Mac不可或缺的伴侣,NSOpenGLContext和AGL构建在CGL之上。