2011-12-21 79 views
1

我在这里遇到了一个小麻烦。我和一位朋友正在制作一款2D游戏。我们正试图实施一场“战争迷雾”,这将限制游戏所看到的内容,从而无法看到四周的角落。尽管如此,我正试图找出制作“影子地图”的最佳方法,即随着玩家的移动,像素可以在每一帧中改变。有时候的阴影贴图是一个大的像1024x1024。我们正在使用LWJGL和Slick。每帧渲染和编辑大图像的最佳方式?

是否有任何有效的方法来编辑和渲染每帧大图像?

我已经看过本网站上的其他雾战争问题,但似乎没有提到如何做实际的渲染和编辑。尽管我尝试过使用Slick的ImageBuffer,但是我可以找到获取图像进行渲染的唯一方法是创建一个新的Image对象,即使丢弃旧的Image对象,也会导致巨大的内存泄漏。

回答

1

我想给这个老问题一个脚踢,希望能够解决OP和其他人在这个话题中发生的问题。最近遇到同样的问题,我想概述我的解决方案。请注意,尽管我使用的是2D游戏引擎(我创建的),但我没有使用OpenGL或JOGL,所以在这种情况下,我的绘图方法非常具体而且不通用。您的具体答案必须根据您使用的系统进行调整。

在我的情况下,我已平铺地图,一般X大小Y。在角色上设置可视性(例如visibilityRange = visionLength)。

我还应该注意 - 我所有的“视线”都是从角色的中心开始的。

初始设置很简单,只是在角色范围之外创建一场战争迷雾。这为我的角色创造了一个不错的圈子。从那里我会找到视觉半径内的所有“视力阻滞剂”。绘制两条线(一条到最左侧的视角,最右侧),然后遮住它后面的所有内容。任何受到部分打击的事情,我都会做一场“半视”的战争迷雾。下面是一个粗略的例子...

P =播放器,X =视觉阻滞剂,L =低视力,N =没有远见

P  X N N N 
     L L L N 
X X X X L L N 

希望这有助于任何游戏开发商跨越这个职位绊倒。

+0

感谢您的分享。我相信我的解决方案非常相似,但我不记得我已经做了什么。 – Zachar543 2016-01-07 22:07:58

0

请原谅我,如果这个答案有点含糊,但尝试使用像素缓冲区对象。它们是操纵像素数据的有效方式。

相关问题