当前位置: 首页 > 知识库问答 >
问题:

Java LWJGL 获得较差的 FPS

苏鸿卓
2023-03-14

我正在编写一个自上而下的2D游戏。我使用的是128x128px图块集,并提供128,64,32和16px四种缩放级别。我在我的图像上使用slick-utils绘图方法来渲染它们,循环通过二维FOR循环,并在混合中添加了一个“渲染范围”,以确保只有必要数量的图块被渲染为屏幕上可见的内容。延迟显然来自渲染过程,尽管我在最高缩放级别128x128时获得了稳定的FPS,但在16x16px时它稳步下降到10FPS。我确信这是代码问题的效率,但作为新手,我不知道从哪里开始解决它。

感谢所有帮助,谢谢!

代码:

for(int x=xPos-1;x<=xPos+renderRange;x++){
    for(int y=yPos-1;y<=yPos+renderRange;y++){

        /**Render Terrain*/
        Image texture = getTerrainTexture(map.tiles[x][y]);
        texture.rotate(map.tiles[x][y].imageRotate);
        texture.draw(x*128,y*128);

        /**Render Objects*/
        if(map.tiles[x][y].object != 0){
            Image object = getObjectTexture(map.tiles[x][y]);
            object.draw(x*128,y*128);
        }
    }
}

共有1个答案

谷梁淇
2023-03-14

您应该使用另一种渲染方法。您现在使用的渲染方法称为即时渲染。说它慢就够了。您应该使用另一种渲染方法,例如显示列表(仅限静态几何)或顶点缓冲区对象(更难学习但它们不是静态的)。

 类似资料:
  • 我试图比较两个XML文件。我的要求是比较新旧xml文件,如果有任何差异,将其合并到新的xml文件中。 但我也想要差异。请告诉我怎样才能得到不同之处。 我已经尝试过XMLUnit,但我不想使用它。

  • 我有两个数据帧。示例: 每个数据帧都有日期作为索引。两个数据帧具有相同的结构。 我想做的是比较这两个数据帧,找出df2中哪些行不在df1中。我想比较日期(索引)和第一列(香蕉、苹果等),看看它们是否存在于df2和df1中。 我尝试了以下方法: 两个熊猫数据帧并排输出差异-突出差异 比较两个熊猫数据帧的差异 对于第一种方法,我得到这个错误:"异常:只能比较相同标记的DataFrame对象"。我尝试删

  • 问题内容: 我在Python中有两个列表,如下所示: 我需要用第一个列表中的项目创建第二个列表,而第二个列表中没有这些项目。从示例中,我必须得到: 有没有循环和检查的快速方法吗? 问题答案: 当心 你可能期望/希望它等于的位置。如果你想作为答案,则需要使用

  • 有2个LinkedHashMaps。我必须检查两个LinkedHashMaps是否有相同的密钥。 例如 Map1包含{A-A、B-B、C-C} 地图 2 包含 {A-a, B-r, C-c, Z-z} 所以这里的第三个LinkedHashMap应该包含{Z-z},因为它包含额外的键和 {B-r}应该在修改时打印出来

  • 问题内容: 我有两个清单,和。我需要的物品不在其中。 我只想得到[4,5]-l1中只有新值。 我可以不用迭代吗? 问题答案: 简短的回答,是的:,但这不会保持秩序。 长答案,不,因为在内部CPU总是会迭代。但如果你使用的是迭代将进行高度优化,并会快那么你的列表解析(更不用说检查会员是 多 快带套然后列出)。

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能的重复: 如何在PHP中获得以分钟为单位的时差 我正在工作表上计算迟到和迟到的员工。我将登录时间存储在表中(类型:时间)。我能够从数据库中获取时间,我想在单独的列中显示时差。 即,如果员工在或之前登录,则其正确的时间和时间差应显示为空。如果他在时间之后(即或更晚)登录,则时差应为。同样明智的是,我需要计算时间差。 一次是恒定的,即,另一