我正在开发一款Iphone游戏,它使用OpenGL es1.1进行渲染,我们遇到了一些问题,让alpha排序在一个大网格上正确工作。问题的网格是一个体育场和阿尔法部分是在体育场内的人群。问题是,当在人群中使用Alpha混合时,我们会得到一些排序问题,导致用户无法区分人群的前面和后面。在大多数情况下,人群只是作为一个混乱的混乱出现,没有人能真正知道谁应该在哪里。
通常情况下,为了解决这样的问题,我会简单地把体育场和人群分开,然后把每个人群分开(每个人群都在自己的飞机上),这样我们就能更好地分类。但是我们需要把抽签数保持在100个以下,所以这不是我们可以做的事情。
我的另一个想法是尝试做一些疯狂的排序,取下所有的顶点,然后通过顺时针旋转对它们进行排序。例如,取0到10,然后先画它们,然后取11到20,然后再画,然后再等等,直到整个人群被画出来,但是我不知道如何开始这样做,甚至这是可能的。
如果这不可能的话,我在想,我可以让一位艺术家把人群的网格剪开,这样就能更好地符合展示在上面的人的轮廓,这样我们就能显示出更少的阿尔法,从而减少透支,并可能更好地排序。但是我不确定添加更多的版本是否会导致性能问题,因为我对Iphone没有太多的经验。
如果有人有任何想法或链接到任何文章,可以帮助我更好地理解这个问题,这将是非常有帮助的,我想现在感谢您的任何帮助,您可能提供。
发布于 2014-03-17 07:20:29
如果您的结构具有alpha,则必须对其进行排序。如果不是的话就不会了。
我的主意是..。让他们把体育场和人群分开。你说过每一群人都是一架飞机。因此,让每个人群成为一个单独的项目--但让他们强迫每个人群平面成为相同数量的指数。6或2套,无论每一个是。
希望球场没有任何阿尔法,只有观众才有。在这种情况下,将数据排列成这样的数组:体育场,然后是人群1平面,2平面等等,然后将每个人群平面的顶点加载到另一组数组中。
希望你们也是三角形而不是三角带。那么你就有了顶点和索引。在这种情况下,唯一需要改变的结构是飞机的顺序,即每架飞机只有6个指数。(或者不管它有多少)。
根据离摄像机的距离对人群的飞机进行分类。然后从人群平面数组中复制数据,以重写这些飞机的索引数据。然后把整个批画成一个对象。您可能无法使用VBO,但您可以将其作为一个对象来完成。
记住,仅仅因为你把它画成一个对象,并不意味着它必须作为一个对象传递给你。
https://stackoverflow.com/questions/22446711
复制相似问题