我正在为使用XNA的2D游戏编写地图编辑程序.为地图所需的所有切片创建Texture2D需要太长时间.
是否有使用纹理进行XNA绘图的替代方法?
我试图为每个图块集创建一个纹理,而不是为图块集中的每个图块创建纹理,但是纹理的大小存在限制,我无法将图块集的所有图块都放入一个纹理中.
目前,程序包含内存中所有可能的纹理作为Bitmap对象.有没有办法简单地在XNA中将Bitmap对象绘制到屏幕上?我搜索过但我找不到任何相关信息.这种方法可以避免必须完全创建纹理,但是我必须直接对位图进行任何着色或效果.
不幸的是,据我所知,在XNA中没有办法直接将位图绘制到屏幕上;它要求所有内容都映射到纹理对象,默认情况下这些对象缓冲到显卡。听起来你正在谈论很多瓷砖,但是,如果它们不能全部适合最大允许的纹理(我不记得那是 1024 还是 4096 平方......) - 你是否尝试过拥有一个为了速度目的而使用无缓冲纹理?另一种选择是将您的图块集延迟加载到纹理中,这样用户就不必等待它们全部加载 - 对于编辑器来说,在加载时使用亮粉色后备颜色通常是可以接受的。
另外,在 XNA 中编写工具有什么内在要求吗?由于听起来您是在与游戏引擎本身分开编写该工具,因此您可能会在 WPF 中找到一些非常可接受的解决方案,包括直接从 BitmapSource 进行绘制以及 UI 的一些实用程序。