Хранение информации OpenGL ES Polygon и Vertex - PullRequest
0 голосов
/ 02 февраля 2011

Я работаю над простой концепцией программы моделирования для Android, и у меня возникла небольшая проблема.

По сути, я храню информацию о вершинах и многоугольниках в векторах Java (эта информация мне нужна, чтобы манипулировать ими, а не рисовать их).

Для рисования я использую VBO.

Каждый полигон в настоящее время имеет список вершин, из которых он состоит. Это означает, что при заполнении массива индексов мне нужно выяснить, какой индекс имеет каждая вершина, и эти индексы могут измениться при создании или удалении вершин.

Я быстро закодировал это, используя метод indexOf (Vertex v) Java Vector, но, очевидно, это очень медленно, и мне интересно, как лучше всего управлять этим, чтобы он не занимал слишком много обработки?

Заранее спасибо.

1 Ответ

0 голосов
/ 03 февраля 2011

Прежде всего, быстрое исправление, которое чуть-чуть улучшит производительность: используйте ArrayList вместо Vector - вам, вероятно, не потребуются накладные расходы на синхронизацию.

Основная проблема заключается в том, что вы пересчитываете весь индексмассив при каждом изменении массива вершин.В настоящее время вы должны сделать это, потому что если вы удаляете вершину, индекс каждой вершины после удаленной в списке изменяется.Таким образом, ключ состоит в том, чтобы минимизировать изменения индексов вершин, что позволяет вам легко поддерживать массив индексов, а не полностью пересчитывать его.Итак: вместо того, чтобы использовать list.remove () для удаления вершины, замените ее вершиной в конце списка.Таким образом, изменился только один индекс, и поэтому будет очень быстро перебирать ваш индексный массив и подставлять новое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...