我有一个基本的曲线着色器,曲线屏幕的边缘,根据像素与中心的距离而变化,像FNAF办公室一样。应该能工作,但是问题是,我正在通过Draw GUI层绘制精灵,这导致坐标不准确。0.5并不是中心点的原因。至少我想是这样。也许是着色器本身有问题。我的着色器知识还很有限,所以我也不知道。另外我应该说明的是,应用程序窗口大小是1280x960,但摄像机是320x240,所以我必须通过Draw GUI层绘制这个精灵。已经尝试用0.25替换0.5,但仍然不行。甚至尝试在层中运行着色器,但仍然没有解决问题,所以也许是着色器代码本身有问题。

varying vec2 v_vTexcoord;
varying vec4 v_vColour;

float curve_amt = 2.0;

void main()
{
    float offset_y = v_vTexcoord.x - 0.5;
    offset_y *= offset_y;
    float offset_x = v_vTexcoord.y - 0.5;

    gl_FragColor = v_vColour * texture2D( gm_BaseTexture, v_vTexcoord - vec2(0.0, abs(offset_y)*offset_x * curve_amt ) );
}

这就是它应该是什么样的: