Несколько вызовов отрисовки с одним буфером вершины / индекса? - PullRequest
0 голосов
/ 09 октября 2019

Я хочу реализовать простую систему следов пули (в OpenGL-ES 2-3), которая позволит использовать разные текстуры или материалы для разных следов, так что это означает, что эти следы должны отображаться в разных вызовах отрисовки и в каждой вершине. можно изменить прямо перед рендерингом.

На самом деле, я не знаю, сколько вызовов отрисовки будет сделано в каждом обновлении, и сколько вершин будет передано на этот вызов отрисовки, поэтому я пытаюсь использовать одиночныйбуфер вершин и буфер единого индекса для всех трейлов, и заполняют области буфера вершин различными данными трейлов каждый кадр. Индексный буфер заполнен простыми (0, 1, 2, 3, 3, 4, 4, 5, 6 ....) значениями один раз и больше не изменится.

Не могли бы вы порекомендовать некоторые лучшие практики,как это сделать? Могу ли я сделать вызовы отрисовки с разными состояниями рендеринга и разными областями вершин для каждого пакета? Какие регионы индексов я должен использовать для каждого колла? Должно ли смещение индекса принимать во внимание смещение вершины, или, возможно, индексы применяются к области вершины вместо целого буфера, поэтому я могу установить смещение буфера индекса на 0 для каждого вызова отрисовки? Или, может быть, я делаю это совершенно неправильно и должен делать что-то еще?

Спасибо!

1 Ответ

0 голосов
/ 10 октября 2019

Хорошо, так, как я заставил это работать:

  1. Я все еще использую один большой буфер для всех пакетов

  2. Для каждого пакета, который я отображаютолько часть буфера (новая часть для каждой партии) и изменение данных в этой части.

  3. Индексы должны учитывать смещение этой части. Таким образом, при рендеринге части буфера с 4-й, 5-й, 6-й, 7-й вершинами необходимо использовать часть индексного буфера с данными {4, 5, 6, 7}.

...