【发布时间】:2010-01-20 14:47:12
【问题描述】:
我正在用 C++ 在 Mac 上编写一个需要使用 OpenGL 的应用程序。
无论如何我可以让 Cocoa 给我一个 OpenGL 上下文并让我在 C++ 中完成我的工作吗? (我希望我的应用程序可以在 Mac OS X 和 iPHone 上运行;但所有的 GUI 都在 OpenGL 中,我只需要一个 OpenGL 上下文)。
谢谢!
【问题讨论】:
我正在用 C++ 在 Mac 上编写一个需要使用 OpenGL 的应用程序。
无论如何我可以让 Cocoa 给我一个 OpenGL 上下文并让我在 C++ 中完成我的工作吗? (我希望我的应用程序可以在 Mac OS X 和 iPHone 上运行;但所有的 GUI 都在 OpenGL 中,我只需要一个 OpenGL 上下文)。
谢谢!
【问题讨论】:
您无法逃避最少量的 Objective-C 代码。但是,如果您将目标 C 文件重命名为 .mm 文件,目标 C 代码将能够调用 c++ 类方法。这意味着您可以将 -drawRect (和其他相关的 NSOpenGLView 消息)挂钩到您的 c++ OpenGL 实现。 NSOpenGLView 有一个 -makeCurrent 方法,您可以在 drawRect 之外调用该方法以确保正确的 OpenGL 上下文处于活动状态。
然后,您的 c++ 代码可以根据需要简单地调用 gl 函数。
【讨论】:
查看NSOpenGLView。在您的子类中的drawRect: 中,您可以访问视图的上下文并调用您的OpenGL 代码。
【讨论】: