пятница, 15 октября 2010 г.

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 и всё это выводится на экран.

Как-то вот так...

Комментариев нет:

Отправить комментарий