我正在写一个自上而下的2D游戏。我使用128x128px tileset,并提供四种缩放级别,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);
}
}
}
答案 0 :(得分:8)
您应该使用其他渲染方法。您现在使用的渲染方法称为立即渲染。我只想说它很慢。您应该使用另一种渲染方法,例如display lists(仅限静态几何)或vertex buffer objects(更难学,但它们不是静态的)。