2010-09-12 26 views
2

我希望這有一個技術(而不是宗教)的答案,但我不知道是否應該使用Objective-C或C++在iPad上創建OpenGL ES應用程序?因爲最終目標是在Windows和OS X上編譯它,所以我傾向於使用C++(並且只使用ObjC來處理我必須使用的東西:App Delegate等),但是我有零Objective-C開發經驗。在iPad/X平臺上的OpenGL ES應用程序:C++還是Objective-C?

我可以與來自Objective-C的C++類進行交互嗎?是否有任何令人信服的理由通過C++使用ObjC?

或者我應該只使用普通老C?

+0

您可以從Obj-C程序中使用C++。結果被稱爲Objective-C++。但是,對象模型不會混合使用 - 您可以在代碼中同時使用這兩種模型,但是您不能從C++類派生Obj-C類,反之亦然。 – 2010-09-12 05:43:37

回答

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類繼承,但C++和Objective-C可以混合(作爲Objective-C++),反之亦然。您還必須注意在Xcode中設置編譯器標誌,以便Objective-C對象根據需要調用C++構造函數和析構函數。

至於你應該使用哪一個:任何一個都可以工作。對於至少應用程序的面向用戶的部分,Objective-C是必需的,因爲您需要它來創建窗口,OpenGL上下文等。但是,如果需要,您的邏輯和引擎可以使用C++甚至ARM組合件。

1

這本書iPhone 3D Programming可能會讓你感興趣。本書的哲學是儘可能少地使用Objective-C。所有的渲染代碼都是用可移植的C++編寫的。

相關問題