Я использую элемент управления формой XNA 4.0 из этого примера проекта в написанном мной приложении: http://creators.xna.com/en-US/sample/winforms_series1
Он отлично работает, и я немало поработал с графикой и анимацией. Основная проблема, над которой я ломаю голову, - это трехмерная модель и примитивные трехмерные формы (цилиндры с тесселяцией 30), которые я визуализирую, с очень неровными краями, как будто они имеют низкое разрешение.
Я попытался выяснить, как включить мультисэмплинг, но все примеры, которые я могу найти в Интернете, похоже, неприменимы к этому новому способу использования XNA в настраиваемом элементе управления формой.
Внутри конструктора GraphicsDeviceService () создается объект PresentationParameters, но единственное доступное свойство - parameters.MultiSampleCount целочисленного типа. Я попытался установить это без эффекта.
Я также попытался сделать задний буфер в два раза больше, чем размер элемента управления (GraphicsDeviceService.cs):
GraphicsDeviceService(IntPtr windowHandle, int width, int height) { parameters.BackBufferWidth = width * 2; parameters.BackBufferHeight = height * 2; ... }
Затем я изменил эту функцию (GraphicsDeviceControl.cs):
void EndDraw() { Rectangle sourceRectangle = new Rectangle(0, 0, ClientSize.Width * 2, ClientSize.Height * 2); Rectangle destinationRectangle = new Rectangle(0, 0, ClientSize.Width, ClientSize.Height); GraphicsDevice.Present(sourceRectangle, destinationRectangle, this.Handle); }
Но это не сработало. Мои объекты, отображаемые на экране, были смещены до 1/4 окна и обрезаны. Хотя он выглядел немного менее зазубренным ...
Итак, на данный момент я не уверен, что я могу сделать, чтобы получить высококачественную графику с помощью этого метода (элемент управления XNA в окне). В целом я новичок в XNA, поэтому любые предложения будут очень полезны.
Спасибо