我很长时间都知道,为了在我的项目中获得阴影。但是仍然有一些问题我希望你可以帮助我。
太阳实际上落后于我,200在我身上,并且从左到右移动到地图的边缘。
我正在更新正交投影,如下所示:
GLfloat orto_posX = cam.x - sun_position.x;
orthoMatrix = GLKMatrix4MakeOrtho(orto_posX-10.0, orto_posX+10.0,-SUN_DISTANCE_Y, -SUN_DISTANCE_Y+MAX_HEIGHT, cam.z - 10.0 , cam.z + 100.0);
首先,这个黑色"电路板出现了这个问题,我不知道怎么称呼它。 比我在地面上有黑色区域。 而且我需要某种不同的视角。我的意思是太阳从左到右移动时间,阴影不移动,右边的框架像洞时间一样被卡住。
这些是着色器:
attribute vec4 position;
//Matrixes
uniform mat4 modelMatrix;
uniform mat4 viewMatrix;
uniform mat4 projectionMatrix;
void main()
{
gl_Position = projectionMatrix * viewMatrix * modelMatrix * position;
}
Fragment Shader:
precision highp float;
void main()
{
highp float depth = gl_FragCoord.z;
gl_FragColor = vec4(vec3(depth), 1.0);
}
没什么特别的。我的projectionMatrix是orthoMatrix,我正在更新,viewMatrix是太阳的位置。
答案 0 :(得分:1)
您无需更改投影矩阵。在从太阳的角度(进入阴影贴图)渲染时,您需要根据其位置更新视图矩阵。在我的教程中查看ShadowMapPass():http://ogldev.org/www/tutorial23/tutorial23.html