Iphone 渲染二维精灵时打开GL ES-Z顺序
我想知道是否有一种方法可以让OpenGL ES渲染一批四边形(使用纹理页面更改渲染)并以z顺序(或相反)渲染它们 注意,我不想要ZBuffer,我只想要按zDepth的顺序渲染四边形 现在我知道人们会说只需按顺序渲染它们,我会按纹理页面分组渲染。但是,正如您所想象的,在某些情况下,来自一个纹理页面的精灵需要出现在另一个纹理页面的前面。如果仅在纹理页面排序上渲染,则会导致问题 所以我想知道如果我给四边形分配了一个z顺序,OpenGL ES会尊重这个吗 得到了很大的帮助 干杯Iphone 渲染二维精灵时打开GL ES-Z顺序,iphone,opengl,2d,render,sprite,Iphone,Opengl,2d,Render,Sprite,我想知道是否有一种方法可以让OpenGL ES渲染一批四边形(使用纹理页面更改渲染)并以z顺序(或相反)渲染它们 注意,我不想要ZBuffer,我只想要按zDepth的顺序渲染四边形 现在我知道人们会说只需按顺序渲染它们,我会按纹理页面分组渲染。但是,正如您所想象的,在某些情况下,来自一个纹理页面的精灵需要出现在另一个纹理页面的前面。如果仅在纹理页面排序上渲染,则会导致问题 所以我想知道如果我给四边形分配了一个z顺序,OpenGL ES会尊重这个吗 得到了很大的帮助 干杯 Rich是的,只要你愿
Rich是的,只要你愿意,你绝对可以这样做
glEnable(GL_DEPTH_TEST);
当然,还有很多其他的事情是正确的。(确保创建深度缓冲区,使用视图平截头体范围内的z值…OpenGL ES不会为您这样做。它将遵循您指定的顺序,即从draw调用中提取四边形的顺序。如果您想让它们按Z排序来渲染四边形,那么在发送到OpenGL ES之前,您必须自己对它们进行排序 如果使用索引缓冲区,显然可以只对索引进行排序。但是你仍然需要自己计算实际的Z
编辑:关于你的纹理问题,我应该补充一点,要同时使用不同的纹理,你应该考虑使用纹理地图集(也就是说,一个纹理包含你想在不同部分使用的各种纹理)。没有Z缓冲区/深度缓冲区,你无法实现你想要的效果。。您要问的是深度缓冲区的工作在没有启用它的情况下完成 启用Z缓冲区后,每次OpenGL都会绘制一个像素。。它检查像素现有的Z值,然后决定是否绘制它
当深度缓冲区未启用时,不管先前存在像素的z值是多少,深度缓冲区都会被覆盖。他说的是绘制顺序,而不是它们是否尊重z缓冲区。他要求的通常是粒子正确混合(需要反向Z顺序),我想他想要Z顺序,但他不想按Z顺序重新排序他的绘图代码,因为他是按纹理分组以获得性能。