我希望开始使用C或C ++进行一些3D编程。我遇到的问题是,我可以找到的唯一可用于Mac OS的教程使用目标C和Cocoa框架。我想要或多或少地获得与Windows用户相同的环境。
如果我尝试使用文本编辑器和g ++编译器,我会丢失标题,但是,如果我尝试使用Xcode,我不得不与Cocoa搏斗,这对我来说是令人沮丧的。我没有看到任何理由为什么预先安装在Mac上的OpenGL / GLUT会迫使我使用Xcode,但似乎没有它就得不到头文件。
如何通过所有Apple'开发人员友好'界面来编写一些具有完全跨平台可移植性的老式代码?
答案 0 :(得分:5)
如果您想使用OSX / Cocoa的最新优势,Objective-C的某些部分是不可避免的。将现有应用程序移植到MacOS的最简单方法如下:
现在有趣的部分:从哪里获得所有这些?
令人惊讶的是,一个好的nibless应用程序示例是OSX的QEMU端口的UI(是的,模拟器)。 Apple的官方GLEssenstialPractices演示还显示了设置OpenGL渲染管道所需的所有信息。其余的一切都取决于你。
系统级OSX编程的详细和现代介绍可以在Mark Dalrymple的“高级Mac OS X编程”一书中找到。它解释了很多东西,在阅读了所有这些之后,我已经理解了操作系统中的大多数设计决策(如果从性能角度考虑,它确实让你接受所有“非标准”的东西)。
要通过“nibless”编程,我建议您阅读像这样的博客文章http://blog.kleymeyer.com/2008/05/creating-cocoa-applications-programatically-ie-nib-less/谷歌搜索有很多帮助。
相同的技巧适用于CocoaTouch / iOS,并且在SO上有很多问题的答案,例如Cocoa touch/Xcode - generating NIB-less graphics context
答案 1 :(得分:2)
如果要创建跨平台应用程序,可以使用命令行工具模板创建项目。 接下来,导入OpenGL和GLUT框架。这将使您获得一个带有所需OpenGL和GLUT标题的“空白”C ++项目。
Lighthouse 3D为您提供有关便携性以及如何启动第一个项目的一些提示。 http://www.lighthouse3d.com/tutorials/glut-tutorial/initialization/
答案 2 :(得分:-1)
我创建了一个软件层(名为cocoglut
),允许将基本或必要的GLUT调用转换为COCOA。该库允许创建/销毁窗口并从C / C ++应用程序注册回调,只需使用GLUT调用,无需nib文件或XCode项目文件(并且可以从命令行编译)。此选项使用完整的视网膜显示分辨率。来源位于GitHub。