0

我想通过在后期处理着色器中转换它来查看平面全屏纹理,因为它是球形的。

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

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

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

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

4

1 回答 1

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 (for texture2DProj)

于 2013-01-19T15:45:37.643 回答