Ray使用LWJGL在Java中投射透明的PNG

时间:2013-07-12 02:09:25

标签: java casting raytracing

我制作一个游戏并且想要为英雄的激光(以及未来的其他东西)实施光线投射,我将精灵放在一张精灵表中,当我绘制时,我会在开始时进行绑定和访问,因为每个元素都知道如何绘制自己,但spritesheet是一个PNG,因此一些元素具有透明度,在openGL中可以正常工作。我知道每个元素的位置,大小等但是如果一些精灵具有透明度,则位置和大小不足以使光线投射完美,因为它只会击中“边界框”。那么有没有办法使用Bresenham算法投射光线(我相信它是最轻的方式,如果我错了就纠正我)并使其在openGL中完美像素,这样我就可以获得光线的碰撞点与实际非 - 它出现在路上的第一个精灵的透明区域?

1 个答案:

答案 0 :(得分:1)

没有简单的方法可以做到这一点。您必须为光线投影创建一个自定义碰撞检查器,以查看它是否会通过,或者它是否会与精灵的一部分发生碰撞。

然而,使用较小的边界框或圆圈来表示它或两者都可能更好。这些更容易,更快速地计算,然后检查纹理中的每个像素。