我们正在使用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