Сегодня накатал простенький рендер карт основанный на UDK. Он действительно крайне простой (чуть более 500 строк кода), при этом не использовались никакие сторонние библиотеки, в том числе и DirectX, OpenGL и готовые движки. Все делается ручками простой отрисовкой 2D графики на ISurface (в качестве оного может выступать к примеру простой Bitmap). Забавно, не смотря на отсутствие оптимизации при больших разрешениях скрол работает куда шустрее и плавнее чем в том же CentrEd использующий для вывода средства OpenGL. (Для теста при скролле каждый раз создается ISurface в которой выполняется полная отрисовка сцены, после чего ISurface как ImageSource присваивается обычному Image контролу в WPF окне):
surf = UOManager.CreateSurface((ushort)2560, (ushort)1600, PixelFormat.Bpp16X1R5G5B5);
if (flt)
UOManager.FacetRender.DrawFlatMap(map, alt, ref surf, range, tcx, tcy);
else
UOManager.FacetRender.DrawObliqueMap(map, alt, ref surf, range, tcx, tcy);
imgFacet.Source = surf.GetSurface().Image;
Оптимизировал рендер, теперь работает намного быстрее (около 20-30 ms полная перерисовка с радиусом 30 (в оригинальном клиенте 18)). Так же добавил Flat mode рендинга (в масштабе 50%):
работает слегка медленнее конечно, но учитывая размеры отрисовываемой области вполне прилично (PS на скринах Debug версия, Release работает раза в 1.5-2 шустрее)...
Подправил отрисовку воды:
в остальном работает идеально - кроме мелкого косячка - толстые стены слегка вылезают на верхние тайлы из-за чего просвечивают... Следствие проблем округления при ресайзе...
Добавил возможность рендинга Flat карты в файл формата png. Работает достаточно быстро у меня заняло лишь несколько минут (от 1 до 3х особо не замерял) чтобы отрисовать всю область карты размером с фелюку. Полученное изображение слишком огромно что бы его заливать, так что лишь его малая часть:
А вообще это все делалось для того чтобы в конечном счете его преобразовать в такую стилюную рисованную карту для клиента:
Предлагаю забанить СтатикЗа на УОКите до тех пор, пока он не выпустит свой шард. Хотя-бы в техническом виде.
В конечном итоге получилось это:
А где Одинокая Гора? Где Щир?
Да вы сударь зануда...
PS Мне понравилось качество - сравнив с потенциально "реальной" картой
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)