问题描述
|
我正在研究具有动态生成地形的基于图块的自上而下的2D游戏,并开始(重新)编写OpenGL中的图形引擎。该游戏使用LWJGL用Java编写,我希望它保持相对独立于平台的状态,并且可以在较旧的计算机上玩。
目前,我正在使用即时模式进行绘制,但是对于最简单的场景,这显然太慢了。
绘制的对象有两种基本类型:“图块”(即世界)和“雪碧”(几乎所有其他东西)(实体,项目,效果等)。
这些图块的大小为20 * 20像素,并以大块形式存储(40 * 40个图块)。像Minecraft一样,地形生成是完全完成的。
我现在使用的方法是遍历播放器附近的9个块,然后遍历内部的每个图块,为图块纹理绘制一个四边形,并根据材料选择附加的四边形。
结束时速度很慢,但是简单的视线检查可以将FPS提升5-10倍。
为了优化这一点,我研究了使用VBO和四方带,但是当地形变化时我遇到了一个问题。这并非在每一帧都发生,但也不是非常罕见的事件。
一种简单的方法是在每次更改时删除并重建块的VBO。不过,这似乎并不是最好的方法。我读到VBO可以是“动态的”,可以更改其内容。如何做到这一点,以及可以在其中有效地更改哪些数据?还有其他有效绘制世界的方法吗?
目前,另一种类型的精灵是使用四边形绘制的,该四边形具有从精灵表映射的纹理。因此,通过更改纹理坐标,我什至可以为它们设置动画。这是做ania杀的正确方法吗?
目前,即使是非常大量的精灵也不会降低游戏速度,而且通过了解VBO,我可以进一步提高它们的速度,但是我还没有看到任何可靠的教程有效的方法。有人知道吗?
谢谢您的帮助!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)