我怎样才能“脱离”Cocoa,用C/C++开发Mac OpenGL应用程序? 我想开始用C或C++编程。我的问题是,似乎我能找到的Mac OS的唯一教程都使用objective C和Cocoa框架。我希望获得与Windows用户相同的环境,或多或少

我怎样才能“脱离”Cocoa,用C/C++开发Mac OpenGL应用程序? 我想开始用C或C++编程。我的问题是,似乎我能找到的Mac OS的唯一教程都使用objective C和Cocoa框架。我希望获得与Windows用户相同的环境,或多或少,c++,xcode,macos,opengl,glut,C++,Xcode,Macos,Opengl,Glut,如果我尝试使用文本编辑器和g++编译器,我会丢失标题,但是,如果我尝试使用Xcode,我会被迫与Cocoa打交道,这让我很沮丧。我真的不明白为什么预装在Mac上的OpenGL/GLUT会强迫我使用Xcode,但似乎没有它我就无法获得头文件 我怎样才能通过所有苹果的“开发者友好”界面来编写一些具有完全跨平台可移植性的老式代码?如果你想利用OSX/Cocoa的最新优势,Objective-C的某些部分是不可避免的。将现有应用程序移植到MacOS的最简单方法如下: 在Objective-C中编写基本的

如果我尝试使用文本编辑器和g++编译器,我会丢失标题,但是,如果我尝试使用Xcode,我会被迫与Cocoa打交道,这让我很沮丧。我真的不明白为什么预装在Mac上的OpenGL/GLUT会强迫我使用Xcode,但似乎没有它我就无法获得头文件


我怎样才能通过所有苹果的“开发者友好”界面来编写一些具有完全跨平台可移植性的老式代码?

如果你想利用OSX/Cocoa的最新优势,Objective-C的某些部分是不可避免的。将现有应用程序移植到MacOS的最简单方法如下:

在Objective-C中编写基本的无nibless应用程序。它将只是一个AppDelegate类和主函数中的一点设置 在AppDelegate的didFinishLaunching事件处理程序中创建的窗口中添加自定义NSGLView子体 在NSGLView初始化中设置CVDisplayLink和渲染回调 在CVDisplayLink的回调中使用现有的OpenGL渲染代码 现在来看有趣的部分:从哪里获得这些

令人惊讶的是,一个很好的无nibless应用程序示例是OSX的QEMU端口的UI是,模拟器。苹果官方的GlessInstalPractices演示还显示了设置OpenGL渲染管道所需的所有信息。其余的一切由你决定

关于系统级OSX编程的详细和现代介绍,可以在MarkDalrymple的高级MacOSX编程书中找到。它解释了很多事情,在阅读了所有这些之后,我已经理解了操作系统中的大多数设计决策,如果你从性能的角度考虑,它确实会让你接受所有非标准的东西

为了完成无笔尖编程,我建议你阅读像这样的博客文章,谷歌搜索帮助很大


CoCoatTouch/iOS也采用了同样的技巧,因此有很多问题需要回答,比如这个问题

如果您想创建跨平台应用程序,可以使用命令行工具模板创建一个项目。 接下来,导入OpenGL和GLUT框架。这将为您提供一个带有所需OpenGL和GLUT头的空白C++项目。 Lighthouse 3D为您提供了一些关于便携性以及如何启动第一个项目的提示。

我创建了一个名为cocoglut的软件层,允许将基本或基本GLUT调用转换为COCOA。此库允许创建/销毁windows并从C/C++应用程序注册回调,只需使用GLUT调用,而不需要nib文件或XCode项目文件,并且可以从命令行编译。此选项使用全视网膜显示分辨率。消息来源已打开

如果要使用Xcode,不必只编写基于Objective-C的应用程序。例如,本文描述了如何在Xcode:中运行wxWidgets应用程序,这是一种基于C++的跨平台应用程序。OpenGL作为一个API本身是非常可移植的。只有在从“新建项目向导”中选择Cocoa应用程序时,才能强制使用Cocoa。选择C或C++,而你不选择。OpenGL在开发跨平台界面方面做得太过分了。