Сегодня накатал простенький рендер карт основанный на 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;
В целом выдаваемая картинка близка к оригиналу. С текстурами правда вышла двоякая ситуация, для простоты и экономии ресурсов я не использовал алгоритмы интерполяции вообще из-за чего поверхности выглядят не такими объемные, в тоже время сглаживание текстур вышло куда лучше чем в аналогах, границ переходов из текстуры в тайл фактически не видно:
(IMG:
http://www.kachalka.com/images/kwqq04b8s83775q2tjq.png)