У меня есть система частиц, где позиции и различные свойства хранятся в объекте буфера вершин. Значения постоянно обновляются ядром CUDA. В настоящее время я просто рендеринг их, используя GL_POINTS как плоские круги. Что меня интересует, так это то, что эти частицы представляют собой более сложные вещи, такие как, например, трехмерные анимированные модели птиц. Я пытаюсь выяснить, какой будет лучший подход. Ради разговора, скажем, анимация модели птицы состоит из 3 кадров (положение крыльев, а что нет)
Я вижу загрузку моделей в списки отображения и циклическую переборку всех частиц при перемещении, вращении и т. Д. Матрицы, а затем вызов списка отображения. Это не кажется идеальным подходом, потому что это потребовало бы передачи всех данных частиц на хост из gpu только для выполнения матричных операций для возврата обратно в GPU (если я не могу вызвать функции рисования из ядра cuda ?? ?)
Я мало что знаю о шейдерах, смогут ли они справиться с чем-то вроде этого?
На данный момент я в основном ищу советы о том, какой путь выбрать, но если вам известны какие-либо статьи или учебные пособия, касающиеся этой темы, слава.
Я работаю с OpenGL изначально на Windows 7 64bit с c ++. Я не использую GLUT