Что такое шаг в glVertexPointer, glTexCoordPointer в VBO

Привет, у меня есть проблема рисования с VBO. Поэтому я задал вопрос Вот .Я не мог найти ответ на мою проблему. Но, обсуждая один ответ, данный там, у меня теперь есть другой вопрос о шагах в VBO. Я не совсем понимаю, что это такое и что делает.

В Вот Я нашел кто-то ответил

Если у вас есть все ваши данные вершин в одном массиве (массив: читать как
указатель malloc), все ваши нормали в другом массиве и т. д.
значение шага равно 0. Например, если вершина, нормали и т. д. хранятся таким образом
:

[Vertex0] [vertex1] [vertex2] …

[Normal0] [normal1] [normal2] …

[Texcoord0] [texcoord1] [texcoord2] …

Если ваша вершина, нормаль и т. Д. Упакованы так:

[Vertex0] [normal0] [texcoord0] [vertex1] [normal1] [texcoord1] [vertex2] [normal2] [texcoord2] …

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

Из этого объяснения я думал, что шаг на самом деле означает расстояние между концом одной вершины и началом другой вершины в буфере. В первом случае это 0, потому что все вершины хранятся непрерывно. То же самое касается текстур. Но затем я читаю другой ответ об определении шагов в той же теме.

Существует некоторая путаница в отношении шага VBO, в основном
из-за его особого значения для 0.

«Страйд» в данном контексте означает расстояние между началом
значение в памяти, и начало следующего значения в памяти. это
не расстояние между концом одного и началом следующего.
Таким образом, в VBO, который является массивом структуры, шаг за каждым
элементом этой структуры будет размер структуры в целом.
Имейте в виду, что struct padding может повлиять на это.

который просто говорит противоположность тому, что говорит другой ответ. Или я не прав насчет того, что имел в виду первый ответ? Может кто-нибудь, пожалуйста, помогите мне решить проблему. Я буду очень признателен, если кто-нибудь может дать ответ с примером. Я дал ссылку на мою реализацию VBO в начале этого вопроса, который еще не решен. Благодарю.

0

Решение

Каков первый ответ пытаясь Можно сказать, что «шаг» между двумя элементами — это смещение в байтах между началом одного элемента и началом следующего.
тем не мение, если элементы, которые вы передаете, являются смежными (т.е. между ними нет пробела), вы можете передать 0 для параметра шага.

Я бы сказал, что неправильно утверждать, что в данном случае «шаг равен 0» — шаг является sizeof(element), но значение 0 получает специальную обработку и означает, что sizeof(element),
Скорее всего, это сделано, чтобы плохому программисту не приходилось использовать два (подвержен ошибкам) sizeof Параметры в общем случае, когда они совпадают.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]