Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java LWJGL获得较差的FPS_Java_Performance_Render_Lwjgl_Frame Rate - Fatal编程技术网

Java LWJGL获得较差的FPS

Java LWJGL获得较差的FPS,java,performance,render,lwjgl,frame-rate,Java,Performance,Render,Lwjgl,Frame Rate,我正在写一个自上而下的2D游戏。我使用的是128x128px的tileset,我提供了四个缩放级别,128、64、32和16px。我在我的图像上使用slick utils draw方法来渲染它们,通过一个二维FOR循环进行循环,并在混合中添加了一个“渲染范围”,以确保只渲染屏幕上可见的必要数量的瓷砖。这种延迟显然来自渲染过程,尽管我在最高缩放级别128x128时获得了稳定的FPS,但在16x16px时,它稳步下降到10FPS。我确信这是一个代码效率问题,但是作为一个新手,我不知道从哪里着手解决它

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

谢谢大家的帮助

代码:


对于(int x=xPos-1;x您应该使用另一种渲染方法。您现在使用的渲染方法称为立即渲染。可以说它很慢。您应该使用另一种渲染方法,例如(仅静态几何体)或(更难学习,但它们不是静态的).

…如果您需要代码方面的帮助,您可能应该发布一些代码。我将发布代码,但我正在寻找更多的理论解决方案,代码只会演示我所写的内容,我使用2D for循环并调用slick utils draw方法。您的所有纹理都是单独加载的,即使它们对于不同的瓷砖是相同的吗这可能是问题所在。如果看不到更多的代码,就很难知道。我加载了一个精灵表,我只使用精灵表对象的getSprite函数返回一个图像。这些对象是由SlickUtilI提供的。我还应该指出,当我用单一颜色渲染普通的GL_四边形时,帧速率仍然会下降,尽管没有那么糟糕,这绝对值得注意。我想知道使用glScalef是否是处理多个缩放级别的合适方法
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);
        }
    }
}