在单个网格上进行OpenGL ES 1.1 Alpha混合排序

时间:2014-03-17 04:00:34

标签: ios sorting opengl-es

我正在开发一款使用OpenGL ES 1.1进行渲染的Iphone游戏,我们遇到一些问题,让alpha排序在大网格上正常工作。问题中的网格是体育场,alpha部分是体育场内的人群。问题是当在人群中使用Alpha混合时,我们会遇到一些排序问题,导致用户无法区分人群的前方和人群的背面。在大多数情况下,人群只是表现为乱七八糟的混乱,没有人能真正分辨出谁应该在哪里。

通常要解决这样的问题,我只需将体育场和人群分开,然后将每个人群分开(每个人群都在自己的飞机上),这样我们就可以更好地对它们进行排序。但是我们需要将绘制计数保持在100个以下的对象,所以这不是我们可以做的事情。

我的另一个想法是尝试通过获取所有顶点然后尝试通过顺时针旋转对它们进行排序来进行某种疯狂的排序。 IE,取0到10并先绘制它们然后取11到20的顶点然后再绘制,然后依次绘制,依此类推,直到整个人群被绘制,但我不知道如何开始这样做或者这是甚至可以做到。

如果那是不可能的话,我想我可以让一个艺术家剪掉人群网格,以便它更适合人们在其上显示的个人资料,这样我们就可以显示更少的alpha,从而减少我们的透支并可能更好的分类。但我不确定是否添加更多顶点会导致任何性能问题,因为我没有很多使用Iphone的经验。

如果任何人对任何可能有助于我更好地理解此问题的文章有任何想法或链接,那将非常有帮助,我现在感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果您的结构具有alpha,则必须对其进行排序。如果不是,那就没有了。

这是我的想法......让他们分开体育场和人群。你说每个人群都是一架飞机..所以每个人群都是一个单独的项目 - 但让他们强迫每个人群飞机的数量相同.6或2套每个人都是。

希望体育场没有任何阿尔法,只有人群才有。在这种情况下,安排数据,使其存储在这样的数组中:体育场,然后是人群1平面,人群2平面等。然后在另一组数组中加载每个人群平面的顶点。

希望你也是三角形而不是三角形条。那么你有顶点和索引。在这种情况下,你必须改变的唯一结构是平面的顺序,每个平面只有6个指数..(或者它是多少)。

根据与相机的距离为人群排序飞机。然后从人群平面数组中复制数据以覆盖这些平面的索引数据。然后将整个批次绘制为一个对象。您可能无法使用VBO,但您可以将其作为一个对象。

请记住,仅仅因为您将其绘制为一个对象并不意味着它必须作为一个对象传递给您。

相关问题