Я хочу знать, есть ли способ получить количество эффективных полигонов (или вершин), отображаемых в окне, когда включена аппаратная тесселяция. Благодаря адаптивной тесселяции номер многоугольника меняется от одного кадра к другому.
Я использую OpenGL 4.2 и отрисовываю сетку, вызывая glDrawElements. Я использую полные программные шейдеры (Vertex, управление тесселяцией, оценка тесселяции, геометрия и фрагментация).
У меня есть начальное количество полигонов в массиве, но после выполнения этапа тесселяции это число больше не действует.
Я пытался использовать glGetQuery (GL_PRIMITIVES_GENERATED), но он всегда возвращает 0.
glGenQueries(1, query).
glBeginQuery(GL_PRIMITIVES_GENERATED, query).
//Draw stuff
glEndQuery(GL_PRIMITIVES_GENERATED).
glGetQueryObjectuiv(query, GL_QUERY_RESULT_AVAILABLE, &value).
Количество сгенерированных примитивов одинаково для каждой вершины для данного LOD. Если вы хотите вычислить # треугольников, сгенерированных для каждой тесселяции, вы можете сделать вычисления самостоятельно, есть ряд уравнений по адресу: