我正在用C ++写一个小的2D等距引擎,并且试图实现实时阴影投射。我按照本页上描述的一种简单方法进行操作,结果是(光与黄色立方体位于同一位置):
结果非常好,但是在墙壁和立方体顶部缺少阴影。这是一个看起来像的示例(我用绿色绘制了预期的阴影):
所有绘制的立方体仅由位于XY位置且Z深度(z = x + y)的3个2D方形构成。我将OpenGL与正交矩阵(glOrtho)结合使用。使用模板缓冲区绘制阴影。
我正在寻找可以帮助我完成此影子投射实施的资源或解决方案。
非常感谢!
我正在用C ++写一个小的2D等距引擎,并且试图实现实时阴影投射。我按照本页上描述的一种简单方法进行操作,结果是(光与黄色立方体位于同一位置):
结果非常好,但是在墙壁和立方体顶部缺少阴影。这是一个看起来像的示例(我用绿色绘制了预期的阴影):
所有绘制的立方体仅由位于XY位置且Z深度(z = x + y)的3个2D方形构成。我将OpenGL与正交矩阵(glOrtho)结合使用。使用模板缓冲区绘制阴影。
我正在寻找可以帮助我完成此影子投射实施的资源或解决方案。
非常感谢!
Answers:
对于屋顶和墙壁,您可以尝试确定墙壁线段和生成的阴影区域之间的交点。您需要两次通过阴影渲染。第一个将执行您今天的工作(在内存中)。第二遍将计算屋顶和墙壁的交点。最后阶段是真实渲染。DeadMG是错误的,您可以这样做。
注意:对于屋顶,您必须将阴影区域和屋顶区域相交。
从根本上讲,您要找的东西无法完成。您想获取一堆2D对象并让它们像3D对象一样投射阴影。如果要具有完整的3D阴影,则需要具有3D对象。