2012-03-15 40 views
1

我一直在想如何使用OpenGL ES 2.0 for 2D。到目前爲止,我認爲我能處理大部分事情。但是我還沒有想出的一件事是爲着色器做什麼?什麼樣的2D遊戲着色器(即超級馬里奧)

我知道你在着色器中設置了相機/視圖和燈光,但我不想要陰影或任何種類的照明標誌。基本上我只想在屏幕上移動精靈,讓精靈看起來就像他們在Photoshop中繪製時一樣。

任何人都有一個着色器的例子會做到這一點?或者也許是一篇談論這個的文章?

我已經發現,在嘗試製作純粹的2D程序時,OpenGL中存在很多3D開銷,但顯然這是Android上唯一可行的選項。

+0

這是一個GLSL着色器。照明,照相機等不會發生,除非你讓它們發生。如果要準確寫入紋理顏色,則從紋理中提取它們並將它們寫入片段着色器輸出。你在問怎麼做?因爲這非常簡單。 – 2012-03-15 05:51:28

+0

其實你不必在Android上使用OpenGL來製作2D遊戲。 Meganoid和Stardash都是根據開發人員使用Canvas類製作的。他在這篇文章中分享了一些技巧:http://techblog.orangepixel.net/2012/01/android-canvas-and-gamecode-tricks/ – haffax 2012-03-15 10:37:32

+0

@NicolBolas是的,這就是我要求的。你是怎麼做到的? – Legion 2012-03-15 13:13:55

回答

3

我做了一個2D視頻遊戲,這些是我使用的着色器。兩個非常簡單的着色器。這是你要求的嗎?

**VERTEX_SHADER_2D =**  
    attribute vec4 position; 
    attribute vec2 textureCoordIn; 
    varying vec2 vTextureCoordOut; 

    uniform mediump mat4 modelViewMatrix; 

    void main() 
     { 
      gl_Position = modelViewMatrix * position; 
      vTextureCoordOut = textureCoordIn; 
     } 


**FRAGMENT_SHADER_2D =** 
     varying mediump vec2 vTextureCoordOut; 

     uniform sampler2D sampler; 

     void main() 
     { 
      gl_FragColor = texture2D(sampler, vTextureCoordOut); 
     } 
+0

真棒,謝謝! – Legion 2012-03-16 13:36:19