Частина 5 - Поверхні та текстури

Поверхні та текстури

У цій частині розглядаються деякі основи, які Вам потрібно знати, щоб зрозуміти, як працює SDL2.

Коротко: Основи програмування графіки

Завантаження та переміщення зображень у грі (або інших додатках) є основним поняттям в (ігровому) програмуванні. Потім ці зображення зазвичай називають спрайтами. Давайте подивимось на простий приклад:

left: ball and paddle erased between each frame; right: ball and paddle not erased between frames
Зліва: Вікно очищається перед малюванням кожного нового кадра. Справа: Вікно не очищається.

Ось два скріншоти з простої гри. Гравець повинен рухати жовто-зелене весло вгору-вниз, щоб не дати синій кульці потрапити в праву сторону. У грі використовуються два спрайти, спрайт синьої кулі та спрайт жовто-зеленого весла (див. Знімок екрана зліва). Кольором тла встановлено чорний. Лівий скріншот - це те, як гра зазвичай показується гравцеві, тут між кожним промальованим кадром попередній кадр очищається. Правий скріншот демонструє, що відбувається, якщо попередній кадр не був стертий до того, як буде намальований наступний. - Тепер чітко видно, що спрайти перемальовуються знову і знову щоразу з новими різними координатами, і ось як працює (ігрова) графіка (навіть для найскладніших 3D-ігор):

  1. Намалювати кадр
  2. Показати кадр (у вікні на екрані)
  3. Очистити кадр (і повернутись до кроку №1)

Коротко: Зв'язок між графічними об'єктами (наприклад, спрайтами) та обладнанням.

Насправді є лише три місця, де ці зображення зберігаються системі Вашого комп'ютера. Всі зображення (фотографії, малюнки, спрайти для 2d-ігор, текстури для 3D-ігор) зберігаються десь на Вашому жорсткому диску. Якщо Ви запускаєте програму перегляду фотографій, програму для малювання, 2d-гру або 3D-гру, у всіх випадках відповідні зображення потрібно завантажувати з жорсткого диска в оперативну пам’ять (пам’ять довільного доступу) оскільки відображення та маніпуляції (наприклад, обертання фото на 90°) зображень, завантажених в оперативну пам'ять, набагато швидше. Особливо для ігор швидкий доступ до даних зображень дуже важливий! І нарешті, є не просто одна оперативна пам’ять, а дві - контрольована CPU, розташована на материнській платі, що використовується кожною програмою / додатком, яка потребує оперативної пам'яті. Друга оперативна пам'ять розташована прямо біля вашої графічної плати і контролюється так званим GPU (графічним процесором). Це те, що ми хочемо використовувати, якщо розробляємо ігри, оскільки вони є спеціальними, оптимізованими та просто голодними до завдань, пов’язаних із швидкою обробкою зображень.

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

Поверхня SDL2

Поверхня SDL2 дозволяє зображати графічні об'єкти такі як спрайти. Кожна поверхня SDL2 має ширину та висоту, формат пікселів та інші властивості. Тим не менше, це концепція, яка походить від застарілого SDL 1.2 і тому більше не повинна використовуватися. І все-таки є причини, чому нам потрібно представити це тут, і це стане зрозуміло найближчим часом.

Текстура SDL2

Текстура SDL2 дозволяє представляти графічні об’єкти так само як поверхня SDL2, хоча є велика різниця: це апаратне прискорення. Отже, графічний об'єкт зберігається в оперативній пам'яті відеокарти, а будь-які маніпуляції виконуються графічним процесором відеокарти.

То ж як правило,

завжди використовуйте текстури SDL2 для збереження Ваших графічних об'єктів (спрайтів) для SDL 2.0,

тоді Ви отримаєте високу продуктивність!

Три способи SDL_Texture

Отже, як отримати SDL_Texture? В принципі існує три способи створення текстур SDL2. Як це працює для способів 2 і 3 може проілюструвати діаграма.

Спосіб 1: З нуля

Ви створюєте SDL_Texture з нуля, тож потрібно встановити формат пікселів і формат доступу до текстури, і все це потрібно заповнити вручну. Це найскладніший спосіб, який зазвичай не потрібний, якщо Ви не працюєте з необробленими піксельними даними.

Спосіб 2: Шлях від файла до поверхні, до текстури і до екрану. Спосіб 3: Шлях від файла до текстури і до екрану..

Спосіб 2: З поверхні SDL2

2) Ви спочатку маєте або створюєте SDL_Surface з файла зображення і тоді створюєте SDL_Texture з SDL_Surface. Цей спосіб показано на діаграмі, але він означає два кроки.

Спосіб 3: Напряму з файла зображення

3) Ви створюєте SDL_Texture напряму з файла зображення. Це теж показано на діаграмі. Це найпростіший спосіб створити SDL_Texture.

← Попередня частина | Наступна частина →

Немає коментарів:

Дописати коментар