2011-05-21 43 views
5

我必須爲移動平臺啓動一個3D項目。首先我想概述一下主要目的 - 骨骼動畫。至於解決方案,我正在考慮OpenGL ES和C++。所以問題是:OpenGL ES適合執行骨骼動畫嗎?

  1. 是OpenGL ES的足夠能力去處理骨骼動畫(包括剝皮着色器)
  2. 是OpenGL ES的廣泛的支持跨移動平臺,什麼是最有名的? (例如,是否支持iPad?)
  3. 無論如何,這是否可能,我的意思是說我有足夠的計算能力嗎?
  4. 是否值得使用XNA數學庫,因爲它的SIMD優化(雖然我真的不確定SIMD是否支持移動平臺,但是誰知道......)。
  5. 爲此使用C++是否好?如果是,那麼我應該選擇哪種編譯器進行開發和測試?而且,我不知道什麼編譯器用於移動平臺?

正如你可能得到它 - 我從來沒有爲移動平臺編程。因此,歡迎提出一些一般性建議。

+0

太廣泛了。你可以非常輕鬆地查閱這些細節,例如iPad和OpenGL ES以及主流移動平臺使用的語言/編譯器。 – YXD 2011-05-21 09:26:20

回答

7

是的,OpenGL ES 2.0可以很好地處理骨骼動畫的頂點蒙皮。 OpenGL ES 1.1使用了一個固定的函數管道,沒有着色器,所以舊版API很難做到這一點,但2.0增加了對着色器的支持。所有的運輸iOS設備(包括iPhone 3G S和更新的設備,包括iPad)都支持OpenGL ES 2.0,以及幾乎所有的Android設備(我只能找到一些非常低端的手機)。 Windows Phone 7似乎不支持OpenGL ES,但我相信BlackBerry。

如果您對此感興趣,我強烈建議您閱讀Philip Rideout的書「iPhone 3D Programming」。雖然標題中有「iPhone」,但他在書中幾乎所有的代碼都使用了通用的C++,所以它應該很好地轉換到其他平臺,並且應該很容易理解。他甚至在「優化」一章中提供了一段代碼,用於在OpenGL ES 2.0甚至1.1上執行頂點蒙皮。您可以獲取書here的示例代碼,包括此外觀的演示。

C++是supported on iOS through Objective-C++,您可以在Objective-C中設置特定於平臺的UI元素,然後在C++中執行所有後端和渲染邏輯。再次,菲利普在他的書中做了這個,你可以在他的源代碼示例應用程序中看到他如何構造它。 Imagination Technologies的人員還在他們的PowerVR SDK中設置了一些與平臺無關的腳手架,這些腳手架被一些人用來快速獲得在移動設備上的3D渲染和運行。在這個SDK中還有一些關於從OpenGL移植到OpenGL ES的優秀文檔,以及在這些GPU上執行各種效果。我曾經聽說過一些人通過在CPU上執行轉換(在iOS上可以使用Accelerate框架完成)來獲得稍微更好的小頂點集合的性能,但是我會想象頂點着色器會更快更大的幾何。我在移動設備中使用的PowerVR GPU比您想象的要強大得多,特別是iPad 2中的新GPU。

您需要使用Xcode IDE, GCC或LLVM編譯器來定位iOS設備,但我相信Android在這方面有更多的選擇。

+1

一個非常小的增加:在iOS設備上,OpenGL ES 1.1支持矩陣調色板擴展(http://www.khronos.org/registry/gles/extensions/OES/OES_matrix_palette.txt),可用於頂點蒙皮。我不確定其他平臺。 – Tommy 2011-05-22 14:57:06

+0

@Tommy - 好點。在我看了Philip的示例代碼之後,我想到了這一點,他在這裏使用了他的OpenGL ES 1.1蒙皮示例。 – 2011-05-23 15:09:45

2

簡而言之:

  1. 是的,當然。爲什麼不?
  2. 是的,我想。還有什麼? DirectX絕對不是。
  3. 是的,我想。但取決於你想做什麼。
  4. 不,至少不僅僅是因爲SIMD,因爲我認爲它在移動平臺上沒有太多的支持,至少SIMD指令XNA是優化的。
  5. 是的,爲什麼不呢?我認爲我主要使用Objective-C,但是也應該有C++的編譯器。只要問一下谷歌,因爲我也沒有任何移動體驗。
+0

我覺得我被誤解了 - 我對OpenGL有很好的經驗,但是對於PC平臺,沒有OpenGL ES或一般的移動平臺編程經驗:) – 2011-05-21 14:28:57

+0

好吧,對不起,我改變了它。但我認爲我的答案仍然適用。 – 2011-05-21 14:33:54