2013-02-20 39 views
1

我使用cocos2d 2.0製作了一個基於路徑的遊戲,它將爲玩家隨機生成一條路徑(曲率)。此路徑使用box2d的b2EdgeShape創建。我希望把該路徑下的精靈,我所走的路線是這樣的:根據box2d路徑生成一個精靈

  • 的精靈要顯示的路徑下會不斷重複,其高度將永遠超過路徑的高度高(視差背景)

  • 白色精靈將使用CCRenderTexture完美地契合了路徑下(我真正的問題

  • 片段着色器將白精靈的阿爾法值與雪碧我必須表現出比較和乘以這兩個值。對於必須顯示精靈的每個像素,乘法後的阿爾法值將爲1,並希望我可以達到我期待的效果。

如何使白色精靈完全適合使用CCRenderTexture創建的路徑。我試圖遵循RayWenderlich上的Tiny Wings教程,但該教程基於OpenGL ES 1.1,並且有一些固定的管道功能,我無法移植到OpenGL 2.0(我對開始的OpenGL知之甚少)。我寧願使用有OpenGL 2.0的cocos2d 2.0。我已經在片段着色器上使用了一個靜態白色精靈,如果我能夠不斷地在路徑下獲得那種白色,這種方法可以工作。 有人可以請指點我正確的方向嗎?任何幫助將不勝感激:)

回答

1

如果白色精靈只是一個阿爾法面具,你不需要那樣做。後續的雷的例子,我認爲你必須改變是:

在您的-init:

// Built-in to Cocos2D v2.0 
[self setShaderProgram: [[CCShaderCache sharedShaderCache] programForKey:kCCShader_PositionTexture]]; 

... Generate _hillVertices and _hillTexCoords as Ray does ... 

在你-draw:

// Built-in to Cocos2D v2.0 
[[self shaderProgram] use]; 
[[self shaderProgram] setUniformForModelViewProjectionMatrix]; 

// vertex data (glVertexPointer is depreciated) 
glEnableVertexAttribArray (kCCVertexAttrib_Position); 
glVertexAttribPointer (kCCVertexAttrib_Position, 2, GL_FLOAT, GL_FALSE, 0, _hillVertices); 

// texture data (glTexCoordPointer is depreciated) 
glEnableVertexAttribArray (kCCVertexAttrib_TexCoords); 
glVertexAttribPointer (kCCVertexAttrib_TexCoords, 2, GL_FLOAT, GL_FALSE, 0, _hillTexCoords); 

glDrawArrays (GL_TRIANGLE_STRIP, 0, (GLsizei)_nHillVertices); 

我有一個工作實施類似(我使用了頂點和顏色座標,沒有紋理),所以我沒有真正編譯上面的代碼。 Cocos2d v2.0具有內置着色器,用於使用具有紋理的頂點,具有顏色的頂點,具有紋理和顏色的頂點等。只需在設置ShaderProgram並提供正確的數據時選擇適當的kCCShader_ *鍵即可。

+0

我有點困惑,所以你說alpha掩碼不一定是CCRenderTexture?如果不是,那麼我將如何比較其他片段着色器中用於掩蔽的alpha值?如果它是一個CCRenderTexture,那麼我應該使用Ray的方法生成它,而不是生成隨機顏色,我應該生成白色1.0,1.0,1.0,1.0? – 2013-02-25 05:44:51

+0

對不起,我以前沒有得到你想告訴我的,我現在已經研究了着色器,現在我正在使用kCCShader_Position_uColor而不是你告訴我的。現在,我正在路上獲得穩定的白色。該着色器具有統一的變量u_color,片段着色器顯示該顏色。但我不明白我如何獲得這種白色的顏色?我的項目中沒有生成這些CCRenderText的代碼,我只是創建了一個沒有顏色的純路徑,並在啓用調試繪製時顯示b2EdgeShape。 – 2013-02-25 06:44:24

+0

我說你不需要一個alpha蒙版來做到這一點(而且可能不想)。如果你看看Ray的教程「Drawing the Hill」的部分,你會看到他正在用地面紋理填充三角形(三角形的頂部是曲線的頂點)。 – Pat 2013-02-25 11:54:48