Что такого плохого в GL QUADS?
Я слышал, что GL_QUADS
будут удалены в версиях OpenGL > 3.0, почему это так? Тогда мои старые программы не будут работать в будущем? Я провел сравнительный анализ, и GL_TRIANGLES
или GL_QUADS
не имеют разницы в скорости рендеринга (может быть, даже это GL_QUADS
быстрее). Так в чем же дело?
3 ответа:
дело в том, что ваш GPU отображает треугольники, а не квадрицепсы. И довольно тривиально построить прямоугольник из двух треугольников, поэтому API действительно не нужно обременять возможностью рендеринга квадратиков изначально. OpenGL проходит через серьезный процесс обрезки, сокращая множество функций, которые имели смысл 15 лет назад, но больше не соответствуют тому, как работает GPU, или как GPU когда-либо собирается работа. Конвейер фиксированных функций исчез из последних версий я тоже считаю, потому что, опять же, это больше не нужно, и это больше не соответствует тому, как работает GPU (программируемые шейдеры).
дело в том, что чем меньше и плотнее можно сделать OpenGL API, тем проще для поставщиков писать надежные, высокопроизводительные драйверы и тем легче научиться правильно и эффективно использовать API.
несколько лет назад практически все в OpenGL можно было сделать 3-5 различными способами, что накладывало большую нагрузку на разработчик, чтобы выяснить, какая реализация правильный Если вы хотите оптимальную производительность.
поэтому они пытаются оптимизировать API.
люди уже достаточно хорошо ответили на ваш вопрос. На вершине их ответа, одна из причин, что
GL_QUADS
быть устаревшим из-за неопределенной природы квадрицепсов.например, попробуйте смоделировать 2d квадрат с точками
(0,0,0), (1,0,0), (1,1,1), (0,1,0)
. Это плоский квадроцикл с одним углом, подтянутым вверх. Невозможно нарисовать нормальный плоский квадрат таким образом. В зависимости от драйверов, он будет разбит на 2 треугольника либо так, либо иначе - что мы не можем контролировать. Такая модель должна быть смоделирована с двумя треугольниками. - Все три точки треугольника всегда лежат на одной плоскости.