我有一个片段着色器,可以计算在Nexus 7上运行的RGB浮点值。
如果我使用gl_FragColor = vec4(c1,c2,c3,1.0);
运行此着色器 - 其中c1,c2和c3是计算的三种颜色 - 我得到大约26 fps。
如果我保持其他所有内容相同 - 所有计算都保持不变 - 只需更改为gl_FragColor = vec4(c1,1.0,1.0,1.0);
我就可以获得60 fps。
我是否应该期望分配这些浮动值需要这么长时间?或者我错过了什么?
答案 0 :(得分:2)
如果你不在其他任何地方使用c2
,c3
,那么当你从gl_FragColor
删除它们时,编译器会认为它不值得计算它们完全没有,所以它会优化计算。
我们需要了解如何计算c2
,c3
变量以确定问题。
答案 1 :(得分:0)
垂直同步可能是您的问题
最可能的原因是显卡设置中的v-sync (在本例中为移动设备/平板电脑)。
将其关闭并看到它飙升。但我想这是不可能的。您还可以测量渲染帧所需的时间,并确定它实际上比1/60秒短得多。因此逻辑代码需要大量时间。