我一直想知道如何用openGL实现它:
我有一张地图,有平坦的地板和墙壁。这里的一切都是 2d 的,没有 3d 几何,只有 2d 组成地图的 poligons。
使用我投射阴影的多边形的顶点来定义可视区域。
阴影定义了视野,但由于有墙壁的单元格挡住了视野,它们也变暗了。我可以在阴影顶部绘制墙壁,但这样做会在视野之外显示均匀的墙壁。
有人建议我用阴影贴图来解决这个问题。我应该将 2D 场景渲染为 4 个不同的 1D 纹理,这些纹理保持到第一个碰撞表面的距离深度。问题是我不知道如何将 2d 场景的投影渲染到 1D 纹理中。例如,如果我使用: gluLookAt (x, y, 0.0, 0.0, x , y+1, 0.0, 0.0, 1.0);
要渲染顶视图,结果仍然是 2D。此外,由于所有顶点都位于同一平面上,因此不会渲染任何内容,因此所有表面都将与相机正交。
您对如何进行这些 2D 到 1D 投影有任何提示或想法吗?我一直在用谷歌搜索像这样的场景,但它们都在 3D 环境中。