【发布时间】:2010-10-17 19:15:48
【问题描述】:
我们正在使用cocos2d 创建一款 iPhone 游戏。我们正在尝试将多个 sprite 叠加在一起并让它们投射阴影。
现在阴影被渲染为精灵,在大多数情况下都可以正常工作。但我们只希望阴影击中最近的图层。
我制作了一张图片,希望能解释我们正在努力实现的目标:
这就是我们目前拥有的:
基本上,我们希望精灵只渲染与 z-buffer 相同深度的阴影部分。
我们尝试了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 ),我们正在清除每一帧的深度缓冲区。
任何帮助将不胜感激!
【问题讨论】:
标签: iphone opengl-es cocos2d-iphone shadows