Загрузка большого количества точечных моделей с использованием libgdx занимает много времени на Android - PullRequest
1 голос
/ 29 октября 2019

Я разработал приложение для Android, которое отображает около 150 точечных моделей на экране, используя игровой движок Libgdx. Координаты точек хранятся в базе данных SQLite, и после создания простой модели сферы с использованием ModelBuilder они преобразуются в соответствии с их расположением на сцене. Проблема в том, что мне нужно отфильтровать точки на основе некоторых критериев из базы данных, у меня нет возможности загружать модели на заставке, и каждый раз точки, извлекаемые из базы данных и моделей, создаются. Этот процесс занимает около 40 секунд, что неэффективно для приложения. Как можно оптимизировать этот процесс, чтобы уменьшить время загрузки? Ниже приведен фрагмент для извлечения данных из базы данных и создания точечных моделей.

List<ModelInstance> modelList = new ArrayList<ModelInstance>();
public void initialize(String sql) {

    pointFeatures = dbSource.fetchPointData(layerName, sql);
    if (pointFeatures.size() > 0) {
        Node node;

        Model m = createPointModel(style);
        for (PointFeature p : pointFeatures) {

            ModelInstance model = new ModelInstance(m);
            node = p.getNode();
            model.transform.setToTranslation(node.getEasting(), node.getHeight(), node.getNorthing());
            modelList.add(model);
        }
    }
}

@Override
public void render() {

    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);

    modelBatch.begin(camera);
    modelBatch.render(modelList);
    modelBatch.end();  

    }
}

Редактировать 1:

Использование Android Asynctask для извлечения данных из базы данных и создания моделей приводит к загрузке точек одна за другой, но связанные модели и текстурыотображается как черные объекты

...