OpenGL ES:阴影映射

时间:2015-09-08 06:07:56

标签: opengl-es mapping shadow

我很长时间都知道,为了在我的项目中获得阴影。但是仍然有一些问题我希望你可以帮助我。

enter image description here

太阳实际上落后于我,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是太阳的位置。

1 个答案:

答案 0 :(得分:1)

您无需更改投影矩阵。在从太阳的角度(进入阴影贴图)渲染时,您需要根据其位置更新视图矩阵。在我的教程中查看ShadowMapPass():http://ogldev.org/www/tutorial23/tutorial23.html