【发布时间】:2011-08-29 14:34:20
【问题描述】:
我试图弄清楚CGL 和OpenGL on Mac 平台之间的关系。
更具体地说是关于上下文。他们是否共享上下文?如果是,如何?请给我一些相关示例的链接。
如果不是,那么在使用 OpenGL 的 Core Animation 应用程序中是否有两个上下文在工作?
我对 Mac 使用 OpenGL 感到非常困惑。有人可以澄清一下吗?
【问题讨论】:
标签: macos opengl core-animation cglayer
我试图弄清楚CGL 和OpenGL on Mac 平台之间的关系。
更具体地说是关于上下文。他们是否共享上下文?如果是,如何?请给我一些相关示例的链接。
如果不是,那么在使用 OpenGL 的 Core Animation 应用程序中是否有两个上下文在工作?
我对 Mac 使用 OpenGL 感到非常困惑。有人可以澄清一下吗?
【问题讨论】:
标签: macos opengl core-animation cglayer
CGL 设置适合 OpenGL 渲染的设备特定上下文。分别与 Windows 和 X 上的 wgl 和 xgl 进行比较。 CGL 了解如何查询图形硬件的像素格式,然后如何设置和配置上下文(例如双缓冲或单缓冲、分辨率深度、模板、累积缓冲区等)。但它不提供在该上下文中绘制的函数。使用 CGL 创建上下文后,将其设为当前,然后您可以调用 OpenGL 在该上下文中进行渲染。
在 Core Graphics 中(不要将其与 CGL 混淆),上下文初始化和绘制到上下文中都是由同一个框架处理的。但由于 OpenGL 是一个开放标准并且设计为跨平台,因此渲染功能和设备上下文功能已被抽象为单独的框架。
【讨论】:
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。
【讨论】:
otool -L,您会看到它与 OpenGL 链接。