每帧渲染和编辑大图像的最佳方法?

时间:2011-12-21 04:42:27

标签: java lwjgl

我在这里遇到了一些麻烦。我和一个朋友正在制作2D游戏以获得乐趣。我们正试图实施“战争迷雾”,这将限制游戏所看到的内容,以便他们无法看到角落。虽然,我试图找出制作“阴影贴图”的最佳方法,即在玩家移动时每个帧都可以更改像素。阴影贴图有时很大,为1024x1024。我们正在使用LWJGL和Slick。

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

我已经在这个网站上查看了其他战争问题,但似乎没有提到如何进行实际的渲染和编辑。我已经尝试过使用Slick的ImageBuffer,但我找到的唯一方法是获取渲染图像,每个帧都会创建一个新的Image对象,即使在处理旧的Image对象时也会造成巨大的内存泄漏。

2 个答案:

答案 0 :(得分:1)

我想对这个老问题提出一些建议,并希望能够解决OP和其他任何人在本主题中遇到的问题。我最近遇到了同样的问题,我想概述我的解决方案。请注意,虽然我使用的是2D游戏引擎(我创建的),但我没有使用OpenGL或JOGL,因此我的绘图方法非常具体,在这种情况下并不通用。您的具体答案必须进行调整以匹配您正在使用的系统。

在我的情况下,我有平铺地图,通常是X尺寸的Y.在角色上设置可见性(例如visibilityRange = visionLength)。

我也应该注意 - 我所有的视力线"离开角色的中心。

初始设置很简单,只需在角色范围之外创建战争迷雾。这为我的角色创造了一个漂亮的圆圈。从那里我将找到所有"视力阻滞剂"在视野范围内。映射两条线(一条到最左侧视野,最右侧),然后遮挡它背后的一切。任何部分被击中的东西我会做一个半视力"战争迷雾。这是一个粗略的例子......

p = player,X =视力阻滞,L =低视力,N =无视力

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

希望这可以帮助任何偶然发现这篇文章的游戏开发者。

答案 1 :(得分:0)

如果这个答案有点模糊,请原谅我,但请尝试使用Pixel Buffer Objects。它们是处理像素数据的有效方式。