Почну це з посилання на пояснення того, як працюють версії OpenGL . Коротше кажучи, OpenGL (як правило) назад сумісний, тому всі коди GL 3 добре працюють у реалізаціях GL 4.
4.x-версія версій OpenGL представляє те, що ви можете назвати апаратним забезпеченням класу "Direct3D 11". Це розкриває функціональність цього обладнання. Обладнання D3D10 представлено 3.x версіями OpenGL. Отже, "перехід на openGL 4" означає відмову від нижчого обладнання або наявність кількох шляхів візуалізації.
Детальний розбір фактичних змін функції між 3.3 та 4.2 можна знайти в специфікації 4.2 . Зверніть увагу, що багато функцій (окремий_шадер_об'єктів, затінення_мовного_420паку, текстурне зберігання) не обмежуються обладнанням 4.x; вони є змінами API, і ви можете отримати доступ до них на апаратному забезпеченні 3.x через розширення.
Найбільш важливим питанням є таке: що GL 4.x дозволяє мені робити це, що я не можу використовувати апаратне забезпечення 3.x?
Tessellation - це, мабуть, найвідоміша особливість. Це також, мабуть, найменш корисно. Це не означає, що це марно; Правильне використання tessellation може підвищити деталізацію в моделях. Але мені щонайменше, це насправді не найкраще, що GL 4 має для цього.
Підпрограми Шейдера - цікава ідея. Це в основному дозволяє динамічно складати різні фрагменти шейдерів. Ви можете більш-менш приєднати функцію до певної точки прив'язки програми. Специфікації трохи важко дотримуватися, але це хороша функціональність.
Я б сказав, що завантаження / зберігання зображень - це, мабуть, самий недоглянутий і в той же час найпотужніший біт функціоналу GL 4. З його допомогою ви маєте можливість реалізовувати прозорість, незалежну від замовлення, та ефективність, яка настільки ж хороша, як і OIT. Напевно, існує багато інших застосувань для завантаження / зберігання зображень, але розумніші люди знадобляться для їх з'ясування.
У GL 4. є певні шанси і цілі. Такі речі, як підтримка подвійної точності та непряме надання. Це більше матеріалів у стилі GPGPU, тому, ймовірно, це не буде багато користі в грі.
Але, як правило, GL 4 не радикально змінює спосіб реалізації функції X від GL 3.