【发布时间】:2015-03-07 05:07:19
【问题描述】:
我想构建一个正交投影以使我的太阳阴影贴图看起来正确。不幸的是,代码没有达到使用常规透视投影的预期结果。这是我设置投影矩阵的代码:
glViewport (0, 0, (GLsizei)shadowMap.x, (GLsizei)shadowMap.y);
glMatrixMode (GL_PROJECTION);
glLoadIdentity();
//suns use this
glOrtho(0, shadowMap.x, 0, shadowMap.y, 0.1,1000.0);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity();
据我了解,这应该是正确的。然而,在快速调试渲染之后,我注意到场景渲染在屏幕的一小部分。经过一些实验,我发现更改 glOrtho 中的 shadowMap 值使其覆盖了整个纹理,但它确实被放大了。在我的透视投影中,我使用 0.1 和 1000.0 来表示我的近处和远处,并且我已经尝试过这些和它确实改变了结果,但仍然没有得到想要的结果。我得到正确结果的唯一一次是值与 shadowMap.x 和 shadowMap.y 一起保存,但就像我说的,它的渲染非常小。
我在这里做错了什么?我读过的所有内容都表明初始代码是正确的。
编辑: 显然不清楚这是用于阴影贴图通道,常规通道是用透视渲染的,很好。
【问题讨论】:
标签: opengl orthographic