如何在基于2D的游戏中实现视锥体剔除? (在正交视图中)

时间:2016-07-03 07:32:53

标签: java opengl 2d lwjgl frustum

我制作了一个二维平铺基础游戏,当我渲染许多平铺时,fps大幅下降。我知道为什么会发生这种情况,因为许多物体都在同时被渲染。我需要在正交视图中实现视锥体剔除,但我不知道如何实现这一点。

我浏览了很多网站,整日搜索。但我仍然无法在二维游戏中找到如何实现视锥体剔除。

注意:我使用的是VBO。

3 个答案:

答案 0 :(得分:1)

我很确定如果它是一个简单的2D游戏你不需要一个视锥体,你能不能在你的渲染方法中只做一个if语句来检查这些图块是否仍然在相机的范围内如果不是那么根本就不渲染它们?

答案 1 :(得分:0)

正交视图和透视图之间的区别在于它们所代表的剪裁量;对于透视,它是一个平截头体(或一个方形锥体),对于正字形,它是一个简单的盒子。

你只需要一个简单的AABB-AABB测试来剔除你的精灵,它实际上非常简单。

答案 2 :(得分:0)

晚于聚会,但对于需要聚会的人。

您的瓷砖有多大?在简单的2D游戏中,平截锥体剔除通常是不必要的。

如果您确定剔除是问题所在,请将巨大的图块地图分成几个较小的图块地图,然后仅绘制视图内的图块。其余的是对每个tilemap部分的简单AABB检查。