任何想法如何使用顶点着色器实现Sigma镜头

时间:2011-11-21 18:10:16

标签: opengl-3 vertex-shader

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

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

以下是顶点着色器的代码。

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,所以请任何想法表示赞赏。

感谢

1 个答案:

答案 0 :(得分:0)

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