Простой игровой движок. -53- Графика OpenGL. Часть 23. Создание спрайта на лету.

12 подписчиков

12+
12+

6 просмотров

месяц назад

ПожаловатьсяНарушение авторских прав

12 подписчиков

12+
12+

6 просмотров

месяц назад

ПожаловатьсяНарушение авторских прав
12+
12+

6 просмотров

месяц назад

При использовании спрайтов есть один недостаток. Всегда приходится проверять объект на nil. И делать это каждый раз слишком утомительно. Возникла мысль - оптимизировать этот процесс. Нужно сделать функцию, которая гарантированно будет возвращать указатель на спрайт, даже если он не найден в хранилище, попутно записывая в журнал ошибки. По началу я попробовал за кадром грузить спрайт из исполняемого файла. Но как всегда не всё так просто. Как бы я не старался и какие бы способы не использовал GdiPlusGraphic успешно загружает только битмап, все остальные форматы вызывают исключения. Вот по этому я и не люблю чужой код. В будущем нужно будет самому написать функции загрузки разных форматов графики. В общем этот механизм использовать нельзя. И я решил не загружать спрайт, а создавать его на лету. Для этой цели переписал немного класс спрайта, сделав функцию LoadChessBoard и конструктор CreateChessBoard. Алгоритм создаёт непрозрачную чёрно-белую шахматную доску с указанными размерами. Я заполняю одномерный массив цветами точек, затем на их основе создаю объект GPBitmap, а потом его отдаю в функцию LoadFromGPBItmap, это изменённая функция LoadFromFile. Можно было конечно заливать массив сразу в OpenGL, но пока оставлю так. Это можно будет потом переделать при написании своих функций загрузки. Но это как нибудь потом. Теперь можно гарантированно создать спрайт не имея ни одного файла. Следующим этапом было создание функции GetSprite в главном классе. Если указанный спрайт не найден в хранилище, то в журнал записывается ошибка и возвращается указатель на спрайт по умолчанию. Теперь писанины станет заметно меньше. Если вдруг будет отсутствовать какая либо картинка, пользователь увидит шахматную доску и приложение не упадёт.

Название:

Простой игровой движок. -53- Графика OpenGL. Часть 23. Создание спрайта на лету.

Категория:

Разное