OpenGL - дорогое удовольствие?
А интересует вот почему. Пока у меня был рендерер только под OpenGL - заводил по одному для каждого меша, но в современных графических API такой сущности вообще нет, и параметры задаются при создании пайплайна.
Вот и думаю, то ли надо создавать один VAO на всю программу (одна крайность), то ли кешировать на каждое уникальное сочетание буферов и параметров их привязки(другая), то ли какой-то компромисс вроде создания по VAO на каждый стейт пайплайна...
А что мешает и дальше заводить для каждого меша
то, что позволяющий такое API (в смысле, мой API, не системный) допускает, что каждый меш создаёт собственный стейт пайплайна. Создание которого,как я понимаю, операция достаточно дорогая. Либо будет валиться при попытке отрендерить последовательно два меша, имеющий разные байндинги. Так что эту возможность хотелось бы выпилить, перетащив настройку байндингов в дескриптор пайплайна, и оставив мешам только возможность указывать конкретные буфера, из которых они берут данные для отрисовки
Реюз VAO по сути бессмысленный, так как весь лэйаут строится относительно конкретного забинденного сейчас буфера, при смене на другой придется полностью его перестроить
Обсуждают сегодня