LibGDX渲染颜色数组的最快方法

时间:2016-05-23 21:17:02

标签: java libgdx

我有一个颜色数组。当我使用ShapeRenderer时需要很长时间。 我使用这段代码:

for (int i = 0; i < colors.length; i++) {
        for (int j = 0; j < colors[0].length; j++) {
            shapeRenderer.setColor(colors[i][j]);
            shapeRenderer.rect(i,j,1,1)
        }
    }

必须有一种更快的方法,因为纹理是由像素组成的,并且渲染速度非常快。我的问题是:如何像纹理一样快速渲染这个颜色数组?

1 个答案:

答案 0 :(得分:1)

纹理绘制速度非常快,因为它通常只有几次调用GPU。逐个像素地执行此操作需要更多的调用和状态更改。如果阵列经常更改,您无法做很多事情来改变它。如果它没有,你应该在它们被改变时将它们绘制到纹理上,然后只使用纹理。

在LibGDX中,您可以将每个像素绘制到Pixmap上,然后从中创建新纹理。 资料来源:https://github.com/libgdx/libgdx/wiki/Pixmaps

示例代码:

Pixmap pixmap = new Pixmap( colors.length, colors[0].length, Format.RGBA8888 );
for (int i = 0; i < colors.length; i++)
{
    for (int i = 0; i < colors.length; i++)
    {

        pixmap.setColor( 0, 1, 0, 0.75f ); //Set to color r,g,b,a
        pixmap.drawPixel(i,j); //Draw the pixel
    }
}
Texture pixmaptex = new Texture(pixmap); //Create new texture from the Pixmap
pixmap.dispose();