Ale*_*iad 3 c# graphics xna winforms
我有一个简单的XNA 4.0游戏.我想制作一个Windows窗体用户控件来渲染这个游戏,并提供必要的交互反馈(键盘和鼠标)回XNA.
我尝试过以下方法:
在XNA中:
将XNA的Game.GraphicsDevice重定向到RenderTarget2D.
发送一个事件,发送一个具有KeyboardState和MouseState的对象,由Windows Forms填写,在Update()的开头
在WinForms中:
捕获事件,使用Windows窗体中常用的键盘和鼠标事件获取的数据填充KeyboardState和MouseState.
在OnPaint上,调用Game.RunOnFrame()
从游戏中获取RenderTarget2D(作为纹理).
锁定纹理的数据,并尝试在我的用户控件的图形中逐个像素地绘制它.
另一个想法是调用Game.Run()(新的线程)并在游戏中发送一个发送RenderTarget2D的事件.
我发现了以下问题:
如果我调用Game.Run()我无法隐藏游戏的窗口(显示为黑色,因为我正在重定向渲染)
Game.Run()必须在不同的线程上调用,因为它启动一个新的事件循环(它调用Application方法),然后我在我的用户控件中绘制它创建的不同线程(坏,坏)
使用Color,Vector4甚至Rgba32锁定RenderTarget2D似乎对我不起作用(它表示"错误的结构大小")
有任何想法吗?
提前致谢.
小智 5
在xna的网站上有一个很好的代码示例,关于在winform中嵌入xna.它将指导您完成所有步骤.我为xbox制作游戏,但我将它用于我们为引擎制作的关卡编辑器.
http://xbox.create.msdn.com/en-US/education/catalog/sample/winforms_series_1
| 归档时间: |
|
| 查看次数: |
7842 次 |
| 最近记录: |