WIP News
Работа над С++ проектом сегодня ВРЕМЕННО ПРИостановилась. Всё дело в том, что мне необходимо (причины не важны) чтобы я мог скомпилировать движок как динамическую так и статическую библиотеку!
Изначально у меня проект динамической библиотеки. Аттачится к юзающему её проекту чётко, всё работает.
Решил скомпилить как статическую либу. Ну чтож.. как это сделать – х.з. аще : )) Полез в настройки проекта, поменял типа проекта с Dynamic Library (.dll) на Static Library (.lib). И реально! Проект скомпилился в .lib, вроде всё путём. Ан нет. Если я компилю с ней проект, юзающий движок, то компилляция прохоодит успешно! Но при запуске “игры” она всёравно требует .DLL движка. Как настроить – не ясно. Просмотрел 100500 раз настройки проекта.
slava_mib подсказал создать второй проект как статичную библиотеку, добавить в него существующие файлы и компилить LIB-ы спокойно. И это реально выход! Но хотелось бы конечно просто выбрать нужную конфигурацию солюшну и компилить без геморроя, только как это сделать и возможно ли – я не знаю.
Пока простаивает С++ движок, пишу C#.
Ну что.
— Первым делом вычистил из движка последние остатки DirectX. Теперь gAPI можно встретить только внутри класса рендерера.
— Пока подчищал – нашёл старый костыль, который подставил в место после отрисовки шадоумапы т.к. не знал природу бага, который возникал если не поставить этот костыль. Оказалось всё прозаично – вначале кадра я очищал Z-Bufer не 1 а 0 >_<
— Оптимизтировал рендер в текстуру.
— Сделал менеджер пост-эффектов.
Ну скажем вот так я добавил HDR сцену:
PostHDR HDR = new PostHDR();
scene.Graphics.PostEffectManager.Add(HDR);
Всё достаточно просто, однако менеджер ещё не завершён. Есть нерешённые проблемы.
[+] Добавил DirectX10 рендерер. Он ещё пустой.
Начал оборачивать ресурсы в DirectX10 рендерере.
Полностью обёрнуты:
InputLayout, VertexBuffer, IndexBuffer, VertexShader, PixelShader + Include(интерфейс), можно мои убер-шейдеры теперь компилить и в DX10 ^____^
также реализовал базовые функции рендерера – наблюдаю при запуске игры очищенное окно и GUI поверх него. Сцена ещё не рисуется в DX10.
Кстати. Отныне движок за кадр полноценно может рисовать сразу несколько сцен. Не просто одну сцену с разных камер а реально разные сцены. При создании сцены теперь необходимо указывать размер выходного изображения – текстуры, в которую отрендерилась сцена.
Собсно всё крайне просто – каждая сцена рисуется в текстуру, потом все ти текстуры передаются в OutputMerger который согласно указанным параметрам смешивает сцены. Блендит их или делает “картинку в картинке”. Поверх результата накладывается GUI и всё это выводится на экран.
Как-то вот так…