我們正在使用cocos2d來製作iPhone遊戲。我們正在嘗試將多個精靈層疊在一起,並讓它們投射陰影。iPhone遊戲2d陰影
現在,陰影呈現爲精靈,大部分工作正常。但我們只希望陰影擊中最近的層。
我做了一個形象,希望能解釋什麼是我們正在努力做到:
這裏就是我們目前所面對的:
基本上我們希望精靈只渲染與z緩衝區深度相同的陰影部分。
我們玩過glDepthFunc
和GL_DEPTH_TEST
,但似乎沒有任何工作。
下面是我們如何繪製陰影精靈(子類CCSprite):
- (void)draw {
glDisable(GL_BLEND);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
glDepthMask(GL_FALSE);
[super draw];
glDepthMask(GL_TRUE);
glDisable(GL_DEPTH_TEST);
glEnable(GL_BLEND);
}
的GL_BLEND
電話是隻有在那裏,所以我們可以在任何時候看到的精靈。
所有不是陰影的精靈都使用glDepthMask(GL_TRUE)
,我們正在清除每個幀的深度緩衝區。
任何幫助將不勝感激!
謝謝!使用你的方法,我能夠得到我們正在尋找的結果,不幸的是以幀率爲代價。現在,它可以按照預期工作,我可以開始尋找優化性能的方法。 – aegzorz 2010-10-23 16:28:57