iPad/X平台上的OpenGL ES应用程序:C++还是Objective-C?

3
我希望这个问题有一个技术上的答案(而不是宗教上的),但我想知道在iPad上创建OpenGL ES应用程序时,我应该使用Objective-C还是C++?
由于最终目标是在Windows和OS X上编译它,我倾向于使用C++(仅在必要时使用ObjC,例如App Delegate等),但我没有Objective-C开发经验。
我能否从Objective-C与C++类进行交互?是否有充分的理由使用ObjC而不是C++?
或者我只需使用普通的C?

你可以在Obj-C程序中使用C++。结果被称为Objective-C++。但是对象模型不能混合使用 - 你可以在代码中同时使用两者,但是你不能从一个C++类派生出一个Obj-C类或反之亦然。 - Pavel Minaev
(编辑:这个问题现在已经超过10年了,比Swift早几年。) - Michael Stum
4个回答

1

你可以这样做,它被称为Objective-C++,你只需要确保你的源文件有一个.mm扩展名,这样它们就会被视为混合的Objective-C/C++源文件。

话虽如此,一般来说,如果你的目标是跨平台GLES支持,请尝试用C++编写通用部分,而对于其他任何事情,使用Objective-C(例如设置EAGLLayer等)。这对你的目的来说可能是最好的选择,因为我想你已经熟悉C++了。


1

你需要使用Objective-C来访问触摸和其他苹果提供的库。使用.mm将其转换为Objective-C++,这样你就可以同时使用两者。

但是为了可移植性,只有在必要时才使用Obj-C。另外,我想提到的是OpenGL ES是用于嵌入式系统而不是Mac OS X或Windows,你需要使用OpenGL,而且它们是不同的。


1
C++和Objective-C可以混合使用(作为Objective-C++),但是C++类不能继承Objective-C类,反之亦然。您还必须在Xcode中设置编译器标志,以便按照Objective-C对象的需求调用C++的构造函数和析构函数。
至于使用哪个:两者都可以。至少对于应用程序的用户界面部分,需要使用Objective-C来创建窗口、OpenGL上下文等。但是如果需要的话,您的逻辑和引擎可以使用C++甚至ARM汇编语言。

1

你可能会对iPhone 3D编程这本书感兴趣。该书的理念是尽可能少地使用Objective-C。所有渲染代码都是用可移植的C++编写的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接