将OpenGL应用程序移植到Mac OS:X11,Cocoa或其他替代方案?

时间:2010-02-13 08:23:02

标签: opengl macos x11

道歉,如果这是一个新的问题,但我是Mac编程的新手,并且认为我会尝试将我的应用程序移植到Mac OS。

基本上我的问题归结为我的选择以及Mac上OpenGL编程的权衡取舍?

在进行自己的研究时,我似乎已经得出结论,我可以选择:

a)针对X11进行编程 b)使用Cocoa框架(不知何故?)

我不确定是否还有其他选项。

无论如何,我很高兴知道这些选项是什么,如果确实存在,那么这样做会有任何权衡。理想情况下,我的目标是实现最高级别的可移植性,只要我保持一定的性能。

更多信息:

到目前为止,我已经移植了我的应用程序,尝试使用X11作为我的基础(因为它目前在Linux上编译)。但是我对_glXCreateContext这样的未定义符号出错了,这让我想知道我是不是在咆哮错误的树。

3 个答案:

答案 0 :(得分:2)

根据您在OpenGL之外尝试做的事情,您可能会对GLUT(Mac OS X附带)或SDL作为项目的窗口基础运气不错。我相信SDL在Mac OS X上内部使用Cocoa,在Linux上使用X11。

SDL非常便携;它支持所有主要平台。唯一的缺点是它没有很多“应用程序”功能,例如平台标准打开/保存对话框或GUI控件,你可以通过编写项目的Cocoa版本来获得。

对于GLUT也是如此,但它有一些可能有用的GUI原语(右键单击菜单和按钮)。

直接定位X11意味着您的Mac用户必须安装X11支持;这是许多Mac OS X版本的可选安装,您不一定希望它们按需安装。在我看来,它还通过不与OS X集成来提供更糟糕的用户体验。

答案 1 :(得分:1)

X是OS X上的二等公民。这取决于你想要对你的应用程序做什么,谁将要使用它等等,但我会选择Cocoa(你可以从{开始) {3}})。缺点是Cocoa是一个相当独特的世界,你需要一些时间来适应它。

答案 2 :(得分:1)

除了事先提到的API之外,还有AGL / Carbon和Qt。

AGL有点过时,永远不会支持64位。

在imo中,它是真正应用程序的最佳替代品,因为它是跨平台的,并提供了良好的UI支持。