Наткнулся на проблему: вывод тормозит из-за частых обращений к буферу. Мне казалось что несколько десятков мегов, уходящие на геометрию - это мелочь... Но судя по документации, я где-то ошибся.
Конечно, я могу начать со статей на английском и закончить пролистыванием десятка полупонятных книг по смежным темам. Но лучше спросить и не тратить время.
может я что-то не понимаю, но скелетная анимация персонажей с помощью вершинных шейдеров делается (остальная анимация есть манипуляции с матрицей модели), и прямое обращение к буферу (с лочением и разлочением) не нужно (жручая операция как ты уже понял)
в общем случае ты отдаешь матрицу модели "бочка" на обработку физической части движка с заданными параметрами ("падает под углом чтобы катилась") и получаешь на выхлопе новую матрицу, характеризующую текущее положение дел модели "бочка".
если же ты хочешь чтобы упав бочка еще и разлетелась на куски, то опять же манипуляция с буфером не нужна, бочка может состоять и из нескольких "полу-бочек" если уж до тупого.
в той же GTA видел как сделаны модели машин? они не цельный кусок =)
Я не понимаю о каких буферах речь, вершинные? те что в ogl представлены VBO'ом ? почитать могу продложить gamedev.ru если ещё не, там лекция была не плохая по VBO, не howto а то что надо. Вот,
И чуть больше чем "как оптимизировать меш" :) Собственно, плохо понимаю как оно работает, потому не могу точно сказать чего хочу. Лучший вариант: схема устройства видяхи с описанием что и как делает каждый модуль.
Насчёт тормознутости я вряд ли что-то скажу: большая часть демок спокойно держит Vsync (75) с максимальными настройками. Без него - 130-200, в зависимости от демо. Сцены довольно сложные... производительноссь на уровне других движков, никаких сюрпризов.
- филрейт // К.О. - полигоны в секунду // К.О. - количество смен шейдеров и обновлений в их юниформах - количество DIP'ов // К.О. хотя тут на проц давит - количество ненужных извлечений стейтов по glGet* вызывающих синхронизацию CPU-GPU
>> Мне казалось что несколько десятков мегов
Эммм, возьмем один десяток - 10 * 1024 * 1024 = 10485760 и разделим на 12(4 байта на координату одной вершины), потом поделим на 3 для получения количества поликов... Ты хочешь безболезненно выводить почти 300 тысяч поликов за кадр? :) Даже заюзав индексы для избежания повторений на стыках, все равно многовато будет.
Вообще давай больше конкретики :) Или спрашивай на специализированных форумах.