我有一个全屏图像,我想直接投影到一堆网格上。
几乎就像这个全屏图像在屏幕空间中被渲染成平面一样。但我只希望它出现在某些物体上,在环境中,也被某些物体遮挡。
所以我想以某种方式将这个全屏图像直接投影出来,并将它映射到这个着色器上的任何对象上。
我不能完全正确...
到目前为止我有这个:
varying mediump vec4 projCoord;
#ifdef VERTEX
void main()
{
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
mediump vec4 pos = gl_ModelViewMatrix * gl_Vertex;
projCoord = gl_TextureMatrix[0] * pos;
}
#endif
#ifdef FRAGMENT
uniform mediump sampler2D _ProjectTexture;
void main()
{
gl_FragColor = texture2DProj( _ProjectTexture, projCoord);
}
#endif
这不太行。投影图像太小,例如太小 1/10。它与全屏不对齐。
我究竟做错了什么?