Очередной рефакторинг, новый класс Рендер
Автор: Antalis
Судя по количеству скачиваний на данный момент последних исходников (51) - народ моей разработкой интерессуется. Хоть бы какой совет дельный сказали бы, что ли... ладно, хорошо что не дошло до "хорошее дело наказуемо" - и на том спасибо.
Уже давно (в предыдущей версии) я пользуюсь тайлами в спрайтах, но в данной разработке все никак не дойду до написания статьи и премера по текстурным координатам и делению изображения на тайлы. Это в Будущем. Сейчас расскажу об обновлениях в моем движке.
1. Избавился от Менеджера Сцены.
2. Загруать текстуры обязал менеджер текстур (что логично).
3. Создал класс TGlobalObjectMenager - загружает объекты, хранит глобальный список объектов.
4. Создал класс TObjectRender - имеет свой внутренний список объектов, которые нужно выводить на экран, умеет сортировать объекты в зависимости от значения глубины (от этого зависит порядок вывода на экран)
К сожалению не обошлось без накладок, так как все объекты классов разрознены, для совместной работы нужны взаимные ссылки, в итоге в процедурах появился дополнительный аргумент, например:
ObjectRender.AddObject(ObjectMenager,1);
ObjectRender.Render(TextureMenager,ObjectMenager);
ObjectRender.Sorting(ObjectMenager);
В примере по нажатию стрелок - объект перемещается вправо-влево, вверх-вниз;
по нажатию пробела - останавливается,
по нажатию F2 - становиться самым нижним, F2 - верхним.
Есть какая-то проблема с сортировкой, если значение минимальное - поэтому пришлось вызывать сортировку дважды. Может кто что скажет?
Исходники (Delphi7, OpenGL) можно скачать:
http://www.gamedev.ru/download/?id=4303
А я поехал копать огород своей матере. :-(
27 сентября 2006
Комментарии [1]