LIBGDX - 90,000个锥体

时间:2016-02-21 18:25:55

标签: java libgdx opengl-3

我正在制作一个程序,通过在300 x 300 Pixmap上放置像素来生成这样的图像 Pixelated 这很好,但是像素化会减少我正在寻找的有机效果。所以我让它渲染Voronoi单元而不是像这样的像素: Voronoi

public void render(Color[][] pixels, HashSet<Point> edge) {
        Gdx.gl.glEnable(GL20.GL_DEPTH_TEST);

        shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
        for (int i = 0; i < width; i++)
            for (int j = 0; j < height; j++) {
                Color coneColor;
                if (pixels[i][j] != null) {
                    coneColor = new Color(pixels[i][j]);
                  coneColor.lerp(background, 1 - coneColor.a);
                  coneColor.a = 1;
                    shapeRenderer.setColor(coneColor);
                    shapeRenderer.cone(vertices[i][j].x, vertices[i][j].y, -100, 1.5f, 1.5f, 8);
                }
            }
        shapeRenderer.setColor(background);
        for (Point e : edge) {
            shapeRenderer.cone(vertices[e.getX()][e.getY()].x, vertices[e.getX()][e.getY()].y, -100, 1.5f, 1.5f, 8);
        }
        shapeRenderer.end();
    }

对于少数锥体来说这是好的,但是,正如您可以想象的那样,它对于90,000个锥体的上限来说效果不佳。我已经尝试了实例数组,但libgdx似乎不支持glVertexAttribDivisor。我需要保持平移和缩放的能力。我应该研究哪些替代方案,或者如何使实例化工作?

0 个答案:

没有答案