KLa*_*KLa 4 c++ opengl 2d layer
如果我正在制作一个3D引擎,这个问题的答案就很明确了:我会选择使用深度缓冲区,而不是考虑自己对所有多边形进行排序.
然而,这与2D的情况不同,因为这里的图层可以在没有OpenGL帮助的情况下轻松实现 - 然后您甚至可以在图层内对精灵进行排序和移动.(这在OpenGL afaik中是不可能的)
我很清楚,在C++中创建一个层系统会对性能产生影响,因为在任何情况下我都必须遍历sprite以进行渲染.
如果可以,请同时使用两者。
深度信息非常适合后期处理和3D眼镜之类的东西,因此您不应将其丢弃。这些效果对于2D游戏可能非常好。另外,如果从前到后绘制(不透明的)图层,则可以节省填充率,因为Z缓冲区可以为您进行裁剪(深度测试比实际绘制要快)。深度测试通常几乎是免费的,尤其是当您获得分层Z信息时。因此,可以节省填充率,因此使用深度测试可能会更快。
另一方面,软件排序很好,因此您实际上可以对不透明的精灵进行从前到后的渲染,并且必须正确进行Alpha混合(当然,您可以将这些精灵画回到前面)。