我正在尝试使用着色器在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,所以请任何想法表示赞赏。
感谢
答案 0 :(得分:0)
如果没有使用它的OpenGL代码,这个着色器毫无意义。我怀疑是什么问题,但如果没有渲染代码,我无法分辨。