Пятница, 26.04.2024, 14:26
Приветствую Вас Гость | RSS

Кузница миров

Меню сайта
Категории раздела
Мои статьи [2]
Курс : "Основы С++ для начинающих программистов игр." [25]
WindMill Engine [3]
XNA4 RPG [0]
Перевод туториалов но созданию RPG на C# c XNA4.
C# & Leadwerks [5]
Программирование Leadwerks Engine на языке С# с помощью врапера Le.NET.

Каталог статей и уроков

Главная » Статьи » WindMill Engine

За кадром
За кадром
Для более эффективного использования движка будет не лишним узнать, как же он работает, что происходит «за кадром» с момента вызова функции, например DrawSprite, и до появления результатов ее работы на экране.
Важно понять, что функции рисования вообще и DrawSprite в частности в действительности ничего не рисуют, они лишь дают команду, что нужно нарисовать где-то что-то.
Итак произошел вызов функции DrawSprite, посмотрим какую цепную реакцию внутри движка она вызвала, пройдемся пошагово:
В первую очередь происходит проверка видимости изображения. Если изображение или его часть в экран не попадают, функция прерывает свою работу. Иначе поступает запрос менеджеру ресурсов на получение изображения с указанным именем. Менеджер ресурсов проверяет в списке ресурсов, нет ли там загруженного изображения с таким именем. Если изображение уже загружалось, возвращается указатель на него, иначе изображение ищется на диске и загружается в память. Если данное изображение не найдено, менеджер ресурсов возвращает назначенное по умолчанию (пользователь увидит изображение «Картинка не найдена») . Так что в любом случае результатом запроса к менеджеру ресурсов будет указатель на изображение.
Далее функция DrawSprite обращается к менеджеру сцены, к списку спрайтов которые нужно отрисовать, и добавляет в этот список полученное от менеджера ресурсов изображение и данные о координатах рисования, масштабе и т.п.
После этого работа DrawSprite завершена.
Когда написанная пользователем логика, что была передана в RunEngine, завершается, в действие вступает внутренняя логика движка, часть менеджера сцены, отвечающая за рендеринг. Прежде чем изображения будут выведены на экран, происходит сортировка их списка по слоям. По завершении рендеринга список очищается, чтобы быть заново заполненным для нового кадра.
Подобным образом работают функции рисования графических примитивов и отображения текста.
Немного отличается работа с анимированными спрайтами. Они с момента создания существуют в менеджере сцены до тех пор, пока не будут удалены явным образом.
Категория: WindMill Engine | Добавил: nilrem (11.05.2012)
Просмотров: 823 | Комментарии: 2 | Рейтинг: 0.0/0
Всего комментариев: 2
2 123  
0
Каким образом задавать текстуру, нах-ся внутри папки? Например, DrawSprite(L"data/textures/image.png",x,y); не находит.

1 nilrem  
0
to 123
в движке реализован автоматический поиск ресурсов. Где бы не находился image.png вызов DrawSprite(L"image.png",x,y); его найдет(поиск идет от ехе-файла и во всех сложенных папках). Если есть желание загружать по полному пути нужно использовать LoadRes(wchar_t * resName, bool find = true); с отключенным автопоиском find = false.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0