【问题标题】:Any Idea How to Implement the Sigma lens with vertex shader任何想法如何使用顶点着色器实现 Sigma 镜头
【发布时间】:2011-11-21 18:10:15
【问题描述】:

我正在尝试使用着色器在 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,所以请任何想法表示赞赏。

谢谢

【问题讨论】:

  • 您确定您的 MouseX 和 MouseY 值已转换为正确的值范围吗?我假设您在这里绘制了一个由较小单元格组成的全屏网格?

标签: opengl-3 vertex-shader


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 2013-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多