0

我正在尝试使用着色器在 OpenGL 中实现Sigma 镜头,但遇到了一些问题。

我将纹理坐标传递给顶点着色器,并尝试对焦点区域和过渡区域进行空间变换。但这不起作用,我只得到原始图像。

这是顶点着色器的代码。

in vec4 vVertex;
in vec2 vTexCoord;
//in vec4 vNormal;

uniform mat4   mvpMatrix;
//uniform mat4   mvMatrix;
//uniform mat4   normalMatrix;
uniform float  mm;
uniform float  mouseX;
uniform float  mouseY;

// Texture Coordinate to fragment program
smooth out vec2 vVaryingTexCoord;
smooth out vec2 vVaryingcolorCoord;

void main(void) 
    {
    // Pass on the texture coordinates 
    //vVaryingTexCoord = vTexCoord;
    vec2 m = vec2(mouseX,mouseY);
    vec2 pos = vec2(vTexCoord.s,vTexCoord.t);
    if (distance(pos.xy, m.xy) <=0.1) {
        vVaryingcolorCoord.s = m.x + (pos.x-m.x)/mm;
        vVaryingcolorCoord.t = m.y + (pos.y-m.y)/mm;

    }
    else if(0.1 < distance(pos.xy, m.xy) && distance(pos.xy, m.xy) <= 0.2){
        vVaryingcolorCoord.s = m.x + (pos.x-m.x)/0.8;
        vVaryingcolorCoord.t = m.y + (pos.y-m.y)/0.8;

    }
    else {
     vVaryingcolorCoord.st=vTexCoord.st;

    }

    gl_Position = mvpMatrix * vVertex;
   }

有什么我遗漏的吗,我刚刚开始学习 Opengl 和 GLSL,所以请任何想法表示赞赏。

谢谢

4

1 回答 1

0

如果没有使用它的 OpenGL 代码,这个着色器就毫无意义。我怀疑出了什么问题,但没有渲染代码我无法判断。

于 2011-12-06T17:03:15.023 回答