【问题标题】:CGL vs OpenGL on MacMac 上的 CGL 与 OpenGL
【发布时间】:2011-08-29 14:34:20
【问题描述】:

我试图弄清楚CGLOpenGL on Mac 平台之间的关系。

更具体地说是关于上下文。他们是否共享上下文?如果是,如何?请给我一些相关示例的链接。

如果不是,那么在使用 OpenGL 的 Core Animation 应用程序中是否有两个上下文在工作?

我对 Mac 使用 OpenGL 感到非常困惑。有人可以澄清一下吗?

【问题讨论】:

    标签: macos opengl core-animation cglayer


    【解决方案1】:

    CGL 设置适合 OpenGL 渲染的设备特定上下文。分别与 Windows 和 X 上的 wgl 和 xgl 进行比较。 CGL 了解如何查询图形硬件的像素格式,然后如何设置和配置上下文(例如双缓冲或单缓冲、分辨率深度、模板、累积缓冲区等)。但它不提供在该上下文中绘制的函数。使用 CGL 创建上下文后,将其设为当前,然后您可以调用 OpenGL 在该上下文中进行渲染。

    在 Core Graphics 中(不要将其与 CGL 混淆),上下文初始化和绘制到上下文中都是由同一个框架处理的。但由于 OpenGL 是一个开放标准并且设计为跨平台,因此渲染功能和设备上下文功能已被抽象为单独的框架。

    【讨论】:

      【解决方案2】:

      CGL 是 Mac 上 OpenGL 的低级接口。如果您正在编写 OpenGL Mac 应用程序,您可能不想使用它。我目前正在为 XCode 4 创建一个直观的 OpenGL Mac 应用程序模板,但同时您可以查看https://github.com/mk12/Pong-Ultimate,这是我使用 OpenGL 制作的一个 pong 克隆。它使用 NSOpenGL,一个更高级别的 Cocoa 接口到 OpenGL。

      您可能还会发现 Apple 文档很有帮助:http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGL-MacProgGuide/opengl_intro/opengl_intro.html

      【讨论】:

      • 我正在处理我需要了解 CGL 和 OpenGL 交互的事情。到目前为止,我已经能够理解 OpenGL 和 CGL 是两个不同的框架,但它们可以共享上下文。 Core Animation 应用程序不使用 OpenGL。他们使用 CGL。如果应用程序直接使用 OpenGL,则仅使用 openGL 框架,否则使用 CGL。
      • @Rahul:所以您是说您想知道框架何时使用 CGL 与 OpenGL 交互,何时不使用?只是想知道,为什么?如果 Core Animation 使用 CGL,那么它显然也必须使用 OpenGL,因为这是 CGL 的唯一目的。
      • 这就是我过去的想法。但事实并非如此。 CGL 不使用 OpenGL。那么它们是如何关联的呢?那就是我卡住的地方。事实上,我很难弄清楚 Dock & Finder 是做什么的。他们不使用 CGL 也不使用 OpenGL。您可以通过 nm 工具检查那里的符号链接。
      • @Rahul:“CGL(核心 OpenGL)是 Apple 实现 OpenGL 的最低级编程接口。” developer.apple.com/library/mac/#documentation/GraphicsImaging/….
      • @MacGeek:不确定你对 nm 说 Finder 不使用 OpenGL 是什么意思。如果您在 Finder 的二进制文件中使用 otool -L,您会看到它与 OpenGL 链接。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-21
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2013-09-09
      相关资源
      最近更新 更多