За кадром Для более эффективного использования движка будет не лишним узнать, как же он работает, что происходит «за кадром» с момента вызова функции, например DrawSprite, и до появления результатов ее работы на экране. Важно понять, что функции рисования вообще и DrawSprite в частности в действительности ничего не рисуют, они лишь дают команду, что нужно нарисовать где-то что-то. Итак произошел вызов функции DrawSprite, посмотрим какую цепную реакцию внутри движка она вызвала, пройдемся пошагово: В первую очередь происходит проверка видимости изображения. Если изображение или его часть в экран не попадают, функция прерывает свою работу. Иначе поступает запрос менеджеру ресурсов на получение изображения с указанным именем. Менеджер ресурсов проверяет в списке ресурсов, нет ли там загруженного изображения с таким именем. Если изображение уже загружалось, возвращается указатель на него, иначе изображение ищется на диске и загружается в память. Если данное изображение не найдено, менеджер ресурсов возвращает назначенное по умолчанию (пользователь увидит изображение «Картинка не найдена») . Так что в любом случае результатом запроса к менеджеру ресурсов будет указатель на изображение. Далее функция DrawSprite обращается к менеджеру сцены, к списку спрайтов которые нужно отрисовать, и добавляет в этот список полученное от менеджера ресурсов изображение и данные о координатах рисования, масштабе и т.п. После этого работа DrawSprite завершена. Когда написанная пользователем логика, что была передана в RunEngine, завершается, в действие вступает внутренняя логика движка, часть менеджера сцены, отвечающая за рендеринг. Прежде чем изображения будут выведены на экран, происходит сортировка их списка по слоям. По завершении рендеринга список очищается, чтобы быть заново заполненным для нового кадра. Подобным образом работают функции рисования графических примитивов и отображения текста. Немного отличается работа с анимированными спрайтами. Они с момента создания существуют в менеджере сцены до тех пор, пока не будут удалены явным образом.
to 123 в движке реализован автоматический поиск ресурсов. Где бы не находился image.png вызов DrawSprite(L"image.png",x,y); его найдет(поиск идет от ехе-файла и во всех сложенных папках). Если есть желание загружать по полному пути нужно использовать LoadRes(wchar_t * resName, bool find = true); с отключенным автопоиском find = false.