Почему считается, что отдельные треугольники быстрее квадратов будут? Ведь чтобы нарисовать 1 квадрат, надо 2 треугольника, и передать на видеокарту потребуется 6 точек, когда у квадрата только 4.
патамучта видюха оперирует именно треугольниками.
Human
> передать на видеокарту потребуется 6 точек
Не всегда.
Есть ещё Quad_strip и triangle_strip
А где есть точная спецификация того, как кэшируются результаты работы вертексного шейдера? Где гарантия того, что вертексный шейдер не запускается повторно при одних и тех же атрибутах и значениях юниформов? Есть ли разница, повторно используется индекс одного и того же вертекса в в VertxArray или вертекс совершенно независимый с абсолютно совпадающими атрибутами?
Квады они же для 2д в основном - худ биллборды
Я в принципе догадывался, что видеокарта сама разбивает квадрат на 2 треугольника, но ведь данные еще надо передать в видеокарту.
Про STRIP знаю, раньше их часто использовал, но если рисовать отдельные прямоугольники ими, то придется часто юзать glBegin glEnd, а ведь для этих команд тоже время надо.. или они не повторяются при отображении списка (list) ?
Human
мда... ну ппц тема... и это в 2017 году. про glBegin glEnd, про GL_QUAD. Это же каменный век.
Дело в том, что в GL уже этого нет.
Почитай книжки по современному GL 4.3. Например:
OpenGL_SuperBible_7th_edition
Addison Wesley - OpenGL Programming Guide 8th Edition (2013)
OpenGL Development Cookbook - эта по gl 3.3
Если объем передаваемых данных не велик, то глБегин побыстрее будет даже.
Funtik
> про GL_QUAD. Это же каменный век.
Открой для себя XBox360/XONE или хотя бы amd расширение DX11
innuendo
Там еще в каменном веке были Panasonic 3DO и Sega Saturn, у которых онли квады и онли через жопу, потому как на самом деле деформированные/отмасштабированные спрайты, а не примитивы с четырьмя вершинами
http://altmer.arts-union.ru/3DO/docs/DevDocs/ppgfldr/ggsfldr/gpgf… tml#XREF38473.
https://antime.kapsi.fi/sega/files/ST-013-R3-061694.pdf
Опять ненавистники glBegin в треде. Да что он вам сделал? Детство испортил?
g-cont
> Да что он вам сделал? Детство испортил?
Он мешает насладится крутизной-пупизной
Human
> Почему считается, что отдельные треугольники быстрее квадратов будут? Ведь
> чтобы нарисовать 1 квадрат, надо 2 треугольника, и передать на видеокарту
> потребуется 6 точек, когда у квадрата только 4.
Нет. Чтобы нарисовать квадрат нужно 4 вершины в любом случае.
Чтобы нарисовать квадрат совместимо с тем, как исторически работает GL_QUAD, надо четыре треугольника, иначе интерполяция даст для центра совсем не то, как оно работает.
Два треугольника достаточны только для параллелепипеда или ромба. Трапеция выйдет отекстуренной через жопу.
Начертите трапецию, на которую натянута квадратная текстура, потом поделите её на два треугольника, и прикиньте, куда придётся центр координат при линейной интерполяции вдоль общего отрезка. Сюрприз: он окажется в центре отрезка, который НЕ совпадает с центром трапеции, а будет заметно сбоку. Отсюда торчат уши у перекошенных текстур на пушках и прочих лоу-поли моделях в первом и втором квейке.
То есть, для поддержки GL_QUADS видеокарте нужен геометрический шейдер, иначе она не сможет добавлять корректирующую среднюю точку. На GLES2 устройствах геометрического шейдера нет, и GL_QUADS закономерно выпилен.
Тема в архиве.