Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
LibGDX比使用javaawt绘制二维像素艺术要慢得多_Java_Libgdx - Fatal编程技术网

LibGDX比使用javaawt绘制二维像素艺术要慢得多

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

我制作了一个简单的程序,用网格中的单元格模拟它们自己的颜色,并将它们显示为4x4像素,起初我使用java AWT制作,性能还行,但我很好奇LibGDX的性能如何,大约慢了5倍,是我做错了什么,还是LibGDX就慢了那么多?这是我的渲染循环:

@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像素的效果。