【发布时间】:2014-03-17 04:00:34
【问题描述】:
我正在开发一个使用 OpenGL ES 1.1 进行渲染的 Iphone 游戏,我们在让 alpha 排序在大网格上正常工作时遇到了一些问题。有问题的网格是体育场,alpha 部分是体育场内的人群。问题是当在人群上使用 Alpha Blending 时,我们会遇到一些排序问题,导致用户无法区分人群的前面和后面的人群。在大多数情况下,人群只是乱七八糟地出现,没有人能真正分辨出谁应该在哪里。
通常要解决这样的问题,我只需将体育场和人群彼此分开,然后将每个人群部分分开(每个人群都在自己的平面上),以便我们可以更好地对它们进行分类。但是我们需要将绘制计数保持在 100 个以下,所以这不是我们可以做的。
我的另一个想法是尝试通过获取所有顶点然后尝试通过顺时针旋转对它们进行排序来进行某种疯狂的排序。 IE,取 0 到 10 节,然后先画它们,然后画 11 到 20 节,然后画下一个,依此类推,直到整个人群都被画出来,但我不知道如何开始做这个或这个是甚至可以做到。
如果这不可能,我想我可以让艺术家切割人群网格,使其更适合显示在上面的人的轮廓,这样我们就可以显示更少的 alpha,从而减少过度绘制并且可能更好的排序。但我不确定添加更多顶点是否会导致任何性能问题,因为我对 Iphone 没有太多经验。
如果有人有任何想法或任何文章的链接可能有助于我更好地理解这个问题,这将非常有帮助,我现在要感谢您提供的任何帮助。
【问题讨论】:
-
从您的描述中根本不清楚您目前是如何绘制东西的。对于像人群这样的东西,你不能在没有深度测试的情况下将它们从后到前绘制吗?
-
我们目前正在一个网格中绘制所有内容,包括人群和体育场。就像我之前说的那样,我确实建议将人群从体育场中撤出,但被告知由于限制,这是不可能的。是否有可能以任何其他方式做到这一点,或者将人群与体育场分开是最好的方式。
-
感谢您的勾选。我想知道这对你有什么影响。