我正在做一个相对较小的2D(顶视图)游戏演示,使用OpenGL作为我的图形。这是一个基本的隐形角度,就像我所有的敌人一样,我正在画一条视线弧线,因此玩家知道他们在看什么。OpenGL-简单的2D裁剪/遮挡方法?
我的一个问题,到目前为止是,当我画这个景象弧(如填充多边形)就自然显示了通过屏幕上的任何墙壁,因为没有什么能阻止它:
我我好奇我怎么可能最好能够防止这样的事情。我已经有了代码,可以让我检测与墙壁等的线交点(用于敌方视线检测),并且理论上我可以使用它来检测这种情况并相应地绘制多边形,但这可能是相当费力和/或效率低下,所以我认为如果有任何内置的OpenGL系统可以为我做到这一点,它可能会做得更好。
我试过寻找关于剪裁/咬合等话题的问题,但我甚至不确定这些是否正是我应该寻找的;我的OpenGL技能是有限的。似乎任何使用glClipPlanes或glScissor的东西都不适合这个,因为大量的单个墙壁等等。
最后,这只是我在业余时间做的演示,所以图形并不完全是我的主要担心。如果有一种(合理)无痛的方式来做到这一点,那么我希望有人能指出我正确的方向;如果没有简单的方法,我现在可以暂时解决问题或找到其他解决方法。
我实际上在寻找类似的东西来处理自上而下的游戏中的阴影。到目前为止,我的怀疑一直沿着光线投射(缓慢但完美)的路线,并从遮挡物和某种阴影映射式的机制创造出一个面具。 – ssube
您是否考虑过使用OpenGL照明?这可能意味着一些工作,但适当的光线可能会带来想要的效果。 – Keith
@凯斯:谢谢,这可能是一个好主意。我的照明经验也很有限,我可能需要对我的绘图代码进行一些调整才能使其工作。但如果没有什么更好的话,我会记住这一点。 – Linkage