OpenGL ES 2.0可以推迟渲染/着色吗?

有没有人在OpenGL ES 2.0下实现延迟渲染/着色? 它不支持MRT,所以只有一个颜色缓冲区,它不是以“常规”方式实现的。

具体来说,我正在探索iPad,iPhone4(maaaybe iPhone 3gs)和Android。 在iPad / iPhone4 / iPhone3gs上的GLESView应用程序中,GL_OES_RGB8_RGBA8扩展名存在,而且我还没有看得太深,但是对于8位/通道,这个想法很有趣: http : //www.gamedev.net/topic/ 562138的OpenGL-ES-20-和延遮光/

任何其他的想法? 是否值得做,性能明智?

尽pipe在某些Android设备上可以使用GL_ARB_draw_buffers扩展(因此可以渲染到多个缓冲区),但答案是“ ”(可能有一些“我绘制了五百万个多边形”的光栅化程序)。

这是因为这些设备上使用的GPU确实具有非常弱的像素着色器,因此使用一些复杂的着色器进行全屏传递几乎是不可能的。 你最好坚持在可编程阴影成为主stream之前所使用的旧时代的降级技巧。

无论你能移动到顶点着色器,做它(例如像顶点着色器中变形的网格,而不是在片段着色器中偏移texcoords,全屏变形等效果更好)。

无论你使用几何体来解决什么问题(例如,渲染由实际盒子构成的天空盒比渲染全屏四边形和计算着色器中的纹理采样的视图方向更快),就可以做到这一点。

那么,我们唯一能做的就是希望有更强的像素着色器的新设备可用。 我希望它不是一个令人沮丧的答案:)当然,你可以尝试在Android上实现延期着色,但它可能会很慢。