我希望通过在后处理着色器中对其进行变换来查看平面全屏纹理,因为它是球形的。
我想我必须将投影矩阵应用于着色器中的纹理坐标。
我找到了这个网站:http://www.songho.ca/opengl/gl_projectionmatrix.html,它让我了解了很多关于投影矩阵的内容。
但我该如何应用呢?我想我必须将投影矩阵的第三行乘以纹理坐标,并添加计算的z值以使其成为球形。我的努力没有显示任何结果。
编辑:我在这里看到同样的问题:http://lists.openscenegraph.org/pipermail/osg-users-openscenegraph.org/2008-April/009765.html
答案 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.php(texture2DProj
)