如何通过全局变量将不同帧中的两个状态与着色器进行比较?我需要在两帧之间比较鼠标位置的状态,如果它没有改变,就要做{bla bla bla}。
例如:
vec2 focusNew = vec2(0.0);
float x;
float y;
void main
{
vec2 focus = vec2 ( x, y-1);
if ((focusNew - focus) <= 0.00001) // (focusNew == focus)
{bla bla bla}
focusNew = focus;
}
但focusNew
无法保存当前状态。
答案 0 :(得分:1)
你不能。或者至少不那样。请记住:着色器每帧运行数千次次。
我会解释你怎么可能真的这样做,但很明显你并不真正意味着你所说的意思。鼠标状态在帧与帧之间变化。但这是在CPU上发生的所有事情,它发生一次,而不是每个着色器一次。因此,每个着色器都会计算相同的值。
所以没有必要让着色器做到这一点。只需在CPU上执行该条件,然后提供一个制服,告诉着色器是否执行{bla bla bla}。