Что такого плохого в GL_QUADS? - PullRequest
63 голосов
/ 11 июля 2011

Я слышал, что GL_QUADS будут удалены в версиях OpenGL> 3.0, почему? Мои старые программы не будут работать в будущем? Я провел бенчмаркинг, и GL_TRIANGLES или GL_QUADS не имеют разницы в скорости рендеринга (возможно, даже GL_QUADS быстрее). Так какой в ​​этом смысл?

Ответы [ 3 ]

83 голосов
/ 11 июля 2011

Дело в том, что ваш графический процессор отображает треугольники, а не четырехугольники.И довольно просто создать прямоугольник из двух треугольников, поэтому API не нужно обременять способностью визуализации квадратов.OpenGL проходит серьезный процесс обрезки, сокращая многие функциональные возможности, которые имели смысл 15 лет назад, но больше не соответствуют тому, как работает графический процессор, или как графический процессор когда-либо будет работать .Я полагаю, что конвейер с фиксированными функциями также отсутствует в последних версиях, потому что, опять же, он больше не нужен, и он больше не соответствует работе графического процессора (программируемые шейдеры).

Дело в том, чтоЧем меньше и компактнее API OpenGL, тем проще поставщикам создавать надежные и высокопроизводительные драйверы, а также легче научиться правильно и эффективно использовать API.

Несколько лет назадПрактически все в OpenGL может быть сделано 3-5 различными способами, что возлагает большие трудности на разработчика, чтобы выяснить, какая реализация правильная , если вы хотите оптимальную производительность.

Поэтому они пытаются оптимизировать API.

9 голосов
/ 09 ноября 2015

Люди уже достаточно хорошо ответили на ваш вопрос. Вдобавок к их ответу, одна из причин того, что GL_QUADS не рекомендуется, из-за неопределенной природы четырехугольников.

Например, попробуйте смоделировать 2d квадрат с точками (0,0,0), (1,0,0), (1,1,1), (0,1,0). Это плоский четырехугольник с растянутым углом. Таким способом невозможно нарисовать НОРМАЛЬНЫЙ плоский квадрат. В зависимости от драйверов, он будет разделен на 2 треугольника тем или иным способом, который мы не можем контролировать. Такая модель ДОЛЖНА быть смоделирована с двумя треугольниками. - Все три точки треугольника всегда лежат на одной плоскости.

8 голосов
/ 11 июля 2011

Это не будет «ничто».Как и во многих других функциях, GL_QUADS устарела в версии 3.0, а удалена в версии 3.1.Очевидно, что все это не имеет значения, если вы создаете контекст совместимости.

Любой ответ, который кто-либо может дать по причине их устаревания, будет чистой догадкой.

...