OpenGL ES在移动设备有限资源下的性能与效果的综合平衡
太阳火神的美丽人生 (http://blog.csdn.net/opengl_es)
本文遵循“署名-非商业用途-保持一致”创作公用协议
要想性能好,资源消耗低,那么效果肯定要差些;
要想效果好,那么消耗的资源肯定要高;
即使在pc这种资源高的环境中同样适用的道理,只不过pc上显现不明显,在手持设备上很明显而已。
为了降低GPU资源消耗,往往会在CPU中将灯光信息在某个角度的反射状态,即各个顶点的颜色值记录到该点的纹理贴图上,这样,在使用GPU呈现三维图时,不再计算灯光,而是直接把贴图贴上去就直接从贴图上取该点的颜色(实际也是计算灯光的三大颜色在该点的作用来计算该点的颜色)。
这叫做烘焙图的使用,即记录了灯光反射信息的贴图。能大大地降低实时灯光计算带来的高资源消耗。
不过烘焙图的使用,一般适用于静态展示某个角度的效果,毕竟只有在某个角度下,灯光的反射,在材质上才是确定的,随着观察视角的变化,每个顶点针对光源所反射的灯光,投射到观察者的光线是不同的,颜色也就不同。
实际分析会发现,在一个场景中,有些位置的顶点反射光线随观察视角的变化会很小,有的确会发生很大的变化,甚至逆转。
这样,我们可以考虑针对变化大的顶点位置,使用实时灯光计算,而针对变化小的顶点部分,使用烘焙贴图。
通过这种组合方案,可以滤掉一大部分不必要的实时灯光渲染计算,降低GPU资源的消耗,以提高性能。
时间: 2024-09-29 07:11:04