狗狗才

一个看到过 UFO 的人

Avatar

shader 运行效率

今天写程序遇到个古怪的现象。

OpenGL ES 2.0 shader program中


    vTexCoord = vec2(aTexCoord.s, aTexCoord.t);
    vTexCoord = vec2(aTexCoord.s * 1.0, aTexCoord.t * 1.0);


这两句话计算运行结果完全一样(当然的,乘以1,结果不变么)。但运行效率却差很多。画复杂图形(三角形很多,比如球体)时,速度差别很明显。

关键是,与设想相反的是,第二句运行更快。奇怪吧,画每个三角形多了两次乘法运算,速度反倒更快了。

还不知道是因为什么,shader 编译的差别吧。