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

Есть ли способ использовать буферы разного размера для glDrawElements? Я как-то хочу сопоставить вершины координатам текстуры, чтобы буфер координат текстуры мог быть фактически меньше, чем буфер вершин.

Пример: буфер вершин имеет 16 вершин, а буфер координат текстуры имеет 6 вершин.

vertex_buffer[0] -> texture_coordinates_buffer[0]
vertex_buffer[1] -> texture_coordinates_buffer[1]
vertex_buffer[2] -> texture_coordinates_buffer[2]

vertex_buffer[3] -> texture_coordinates_buffer[3]
vertex_buffer[4] -> texture_coordinates_buffer[1]
vertex_buffer[5] -> texture_coordinates_buffer[2]

...

Спасибо за каждый маленький намек, где искать.

Ответы [ 2 ]

0 голосов
/ 09 октября 2010

Вы не можете сделать это в OpenGL (или Direct3D).Количество элементов в массиве атрибутов должно быть одинаковым, например, если у вас есть VBO, состоящее из 64 вершин, вам нужно иметь 64 текскорда, 64 нормали и т. Д.

Только для этого конкретного отображениябыло бы передать texcoords как дополнительные данные буфера и использовать gl_VertexID для их извлечения и разрешения вашего отображения.

См. расширение texture_buffer_object .

0 голосов
/ 09 октября 2010

О, хорошо, не важно.Нашел ответ (видимо, невозможный) здесь: openGL glDrawElements с чередованными буферами

...