2011-12-01 137 views
-1

我開始學習Android的OpenGL ES,並且遇到一些問題。Android中的着色器在OpenGL ES中

我在互聯網上看到不同的教程,我很困惑。有些着色器和沒有着色器的教程,但它們都是相同的主題。實際上着色器是什麼,我們必須使用它嗎?

哪個OpenGl版本適合創建像Racing Moto或任何3D遊戲這樣的遊戲?

回答

1

實際上,着色器是由GPU構建並執行的程序。在遊戲編程中,他們通常以緩衝數據的形式從CPU輸入數據,這些數據表示遊戲中的3D幾何體。還有通用GPU(GPGPU)程序,它們不一定需要用於輸入的3D數據,但它們處於不同的編程範圍。

我對OpenGL ES並不是太熟悉,但對於移動平臺和其他更具限制性的硬件,可以不使用着色器而只是使用固定功能流水線。着色器是你不需要馬上進入的東西,如果你是編程圖形的初學者,但是很快就可以選擇它。 OpenGL ES是OpenGL的更加精簡版本。

正如沃爾夫岡所述,OpenGL ES 2.0要求您使用着色器,因爲固定功能流水線已經不再使用,而是留到較舊的較慢硬件。

也就是說,OpenGL和OpenGL ES的侷限性最終來自您使用的硬件。有些手機比其他手機具有更高的像素填充率,某些硬件可以繪製多個幀緩衝區對象(更高級的功能),有些則不能。 OpenGL不會在內部爲您提供這些功能 - 它只是在硬件具有該功能的情況下向程序員公開該功能。

2

造成混淆的原因可能是有兩個版本的OpenGL ES可用於android,OpenGL ES 1.x和OpenGL ES 2.0。這些不相容。 在OpenGL ES 1.1中,沒有着色器。 在OpenGL ES 2.0中,着色器是必需的。

我會推薦所有新開發的OpenGL ES 2.0;起初它的工作稍微有些難理解,但在我看來,這種努力是值得的。

+0

但並非所有設備都支持OpenGL ES 2.0。這意味着會有很多人無法在自己的設備上運行我的遊戲。 – droidman