【问题标题】:Java LWJGL Getting poor FPSJava LWJGL FPS 越来越差
【发布时间】:2012-06-25 16:34:32
【问题描述】:

我正在编写一个自上而下的 2D 游戏。我正在使用 128x128px 的图块集,并提供四个缩放级别,128、64、32 和 16 像素。我在我的图像上使用 slick-utils draw 方法来渲染它们,循环通过二维 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);
        }
    }
}

【问题讨论】:

  • ...如果您需要代码方面的帮助,您可能应该发布一些代码
  • 我会发布代码,但我正在寻找更多的理论解决方案,代码只会演示我所写的内容,我正在使用 2D for 循环并调用 slick-utils draw方法
  • 是否所有的纹理都是单独加载的,即使它们对于不同的图块是相同的?这可能是问题所在。不看更多代码很难知道。
  • 我加载了一个精灵表,我只是使用返回图像的 SpriteSheet 对象的 getSprite 函数。这些对象由 SlickUtil 提供
  • 我还应该指出,当我用单色渲染普通的 GL_QUADS 时,我仍然会出现帧率下降,虽然没有那么糟糕,但它绝对是显而易见的。我想知道使用 glScalef 是否是处理多个缩放级别的合适方法

标签: java performance render lwjgl frame-rate


【解决方案1】:

您应该使用另一种渲染方法。您现在使用的渲染方法称为立即渲染。说它很慢就足够了。您应该使用另一种渲染方法,例如display lists(仅限静态几何)或vertex buffer objects(更难学习,但它们不是静态的)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2016-03-05
    • 2014-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-15
    相关资源
    最近更新 更多