在GLSL中应用自定义投影矩阵(到texturecoordinate)

时间:2013-01-19 14:30:46

标签: opengl glsl

我希望通过在后处理着色器中对其进行变换来查看平面全屏纹理,因为它是球形的。

我想我必须将投影矩阵应用于着色器中的纹理坐标。

我找到了这个网站:http://www.songho.ca/opengl/gl_projectionmatrix.html,它让我了解了很多关于投影矩阵的内容。

但我该如何应用呢?我想我必须将投影矩阵的第三行乘以纹理坐标,并添加计算的z值以使其成为球形。我的努力没有显示任何结果。

编辑:我在这里看到同样的问题:http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-April/009765.html

1 个答案:

答案 0 :(得分:1)

我认为在您通过投影矩阵乘以文本坐标后,您必须进行透视划分并从3D移动到2D(因为纹理是2D)。这与阴影贴图相同。

// in fragment shader:
vec4 proj = uniformModelViewProjMatrix * tex_coords;
proj.xyz /= proj.w;
proj.xyz += vec3(1.0);
proj.xyz *= 0.5;
vec4 col = texture2D(sampler, proj.xy);

或查看http://www.ozone3d.net/tutorials/glsl_texturing_p08.phptexture2DProj