2012-08-02 102 views
0

我试图在LWJGL中创建一个小2D游戏,但是大图将帧速率从大约3000降低到大约15.我知道这主要是因为它绘制屏幕上的每个图块即使你只能看到它们中的一小部分。我想知道如何找到哪些图块可见并只将它们打印到屏幕上。Java OpenGL只绘制可见纹理

回答

2

这叫做culling,其中最有名的技术是frustum culling。通常,您可以定义一个边界体积并测试一个对象是否位于其中。例如,在2D中,您可以定义一个矩形(与您的窗口/视口相同),并为每个对象(平铺/精灵/其他)定义一个边界框。圆是一个容易测试的边界框,但矩形也可以。

然后,您只需测试对象的边界框和视区矩形是否相交。如果是这样,画出来,否则,不要。

另请参阅this在另一个SE网站上回答有关2d剔除的更多详细信息。

+0

谢谢:D我会加入尽快添加此,感谢您的帮助! – 2012-08-20 19:14:34