LibGDX比使用javaawt绘制二维像素艺术要慢得多
我制作了一个简单的程序,用网格中的单元格模拟它们自己的颜色,并将它们显示为4x4像素,起初我使用java AWT制作,性能还行,但我很好奇LibGDX的性能如何,大约慢了5倍,是我做错了什么,还是LibGDX就慢了那么多?这是我的渲染循环:LibGDX比使用javaawt绘制二维像素艺术要慢得多,java,libgdx,Java,Libgdx,我制作了一个简单的程序,用网格中的单元格模拟它们自己的颜色,并将它们显示为4x4像素,起初我使用java AWT制作,性能还行,但我很好奇LibGDX的性能如何,大约慢了5倍,是我做错了什么,还是LibGDX就慢了那么多?这是我的渲染循环: @Override public void create () { cam = new OrthographicCamera(width, height); Gdx.graphics.setWindowedMode(width * scale
@Override
public void create () {
cam = new OrthographicCamera(width, height);
Gdx.graphics.setWindowedMode(width * scale, height * scale);
renderer = new ShapeRenderer();
inputs = new Inputs();
world = new World(width, height, 8);
Gdx.input.setInputProcessor(inputs);
}
Pixel thisPixel;
@Override
public void render () {
Gdx.gl.glClearColor(0, 1, 1, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.setProjectionMatrix(cam.combined);
renderer.begin(ShapeRenderer.ShapeType.Filled);
inputs.update();
for (int x = 0; x < width; x ++)
for (int y = 0; y < height; y ++) {
thisPixel = world.getPixel(x, y);
renderer.setColor(world.materials.colors[thisPixel.colorId]);
renderer.rect(x - width / 2 - 1, y - height / 2 - 1, 1, 1);
}
renderer.end();
System.out.println(Gdx.graphics.getFramesPerSecond());
}
@覆盖
公共void创建(){
cam=新的正交摄影机(宽度、高度);
Gdx.graphics.setWindowedMode(宽度*比例,高度*比例);
渲染器=新的ShaperEnder();
输入=新输入();
世界=新世界(宽度、高度、8);
Gdx.input.setInputProcessor(输入);
}
像素对像素;
@凌驾
公共无效渲染(){
glClearColor(0,1,1,1);
Gdx.gl.glClear(GL20.gl\u颜色\u缓冲\u位);
renderer.setProjectionMatrix(cam.combined);
begin(shaperender.ShapeType.Filled);
inputs.update();
对于(int x=0;x
AWT使用画布绘制二维曲面。LibGDX使用openGL进行三维渲染,您必须将其投影到二维曲面上(renderer.setProjectionMatrix(cam.combined);)
绘制矩形和缩放是非常昂贵的操作,因此如果你能找到其他方法来实现你想要的,它可能会加快速度。我使用macOS(英特尔)并使用java 11,因为java 13为我打破了LibGDX。我将绘制到屏幕上的图像放大,以获得4x4像素的效果。