Як використовувати сучасний OpenGL для 2D ігор?


9

Я знайшов безліч "сучасних" підручників OpenGL (3.0+) для 3D, але я нічого не знайшов, шукаючи інформацію про те, як використовувати його для розробки 2D ігор. Як я можу почати використовувати OpenGL для 2D gamedev?

Зокрема, мені цікаво отримати відповіді на наступні теми:

  • Як я повинен налаштувати свої різні матриці для ортографічного проектування?
  • Чи широко використовуються шейдери у двовимірних програмах, як у 3D-програмах? Якщо так, то яке їх призначення в налаштуваннях 2D?
  • Як мені впоратися з величезною кількістю текстур, очевидно необхідних для 2D гри?

Прошу вибачення за відносно широке запитання, але я витратив тривалий час на пошуки і знайшов дуже мало корисної інформації, яка стосується сучасного OpenGL.

Відповіді:


11
  • Як слід встановити різні матриці для ортографічної проекції?

Ваша мета - 2D, правда? Тож вам не потрібно ніякої проекції. Проекція - акт конденсації 3D-світу до двовимірної площини. Встановіть шейдер так, щоб він позначав координату Z кожної вершини, 0.0і вам слід встановити.

Ви можете використовувати матрицю масштабу для координат X та Y. Масштабування його так, -10.0щоб 10.0стати -1.0до 1.0. Для довідок матриця для цього:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • Чи широко використовуються шейдери у двовимірних програмах, як у 3D-програмах? Якщо так, то яке їх призначення в налаштуваннях 2D?

Вони можуть бути. Вони все ще можуть використовуватися для освітлення Per-Pixel, надаючи об’єктам деяку фальшиву глибину. Вони також можуть бути використані для текстурних ефектів, водних ефектів, створення зображень ... Ви навіть можете використовувати їх для обчислень фізики з невеликою хитрістю.

Ще один спосіб зробити це: все, для чого вони використовуються в 3D. Він просто застосовується по-різному, і не так добре задокументований. Хоча люди, які грають у 2D ігри, ймовірно, не збираються займатись вашою справою, якщо у вас немає життєвих ефектів, тому вони теж не потрібні.

Хоча вам потрібно буде знати основи шейдерів, щоб зробити спрайт все одно.

  • Як мені впоратися з величезною кількістю текстур, очевидно необхідних для 2D гри?

Так само, як у 3D. Пучки текстурних об'єктів, PBO і Text Atlas або декілька. Напевно, кілька структур / занять, а також головний біль. Я думаю, це могло б називатися "Управління активами", або щось подібне.

  • Як я можу почати роботу з 2D gamedev?

Напевно, є кілька навчальних посібників там. Хоча, оскільки 3D-версія є більш поширеною, я б сказав, щоб вивчити OpenGL для 3D, а потім застосувати те, що ви дізнаєтесь, до цього двовимірного аналога. 3D і 2D дуже схожі, 2D просто не відслідковує координату Z.


5
Для 2D ви все ще можете використовувати ортографічну проекцію та різні координати Z, щоб зробити Z-буферизацію , інакше вам доведеться виконати алгоритм художника самостійно та намалювати в потрібному порядку.
congusbongus

@congusbongus насправді, якщо ви спрацьовуєте прозорістю, вам, швидше за все, доведеться самостійно виконати алгоритм художника ...
Panda Pajama
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.