【发布时间】:2010-08-21 01:03:16
【问题描述】:
我正在编写一个基于 2d 瓦片的引擎。目前,我的绘图例程使用 C# 绘图库在每次屏幕刷新时重绘每个可见图块。我开始滚动和缩放工作,一切看起来都像我想要的那样。但例行程序很慢。现在我正在努力改进它。我有几个问题:
首先,我认为没有必要在每次刷新时重新绘制图块(因为它们永远不会改变)。现在我正在尝试更改算法,以便在初始化时将整个地图写入单个位图,然后在绘制时剪切位图的正确部分。你认为这是正确的方法吗? (我也考虑过将图像留在背景中并滚动它。但后来我决定我不想绘制视野之外的东西。但是,也许这比剪切/粘贴便宜?内存与时间的问题?)
其次,据我了解,C# 绘图例程不使用 GPU 的全部功能。我想我应该尝试在 OpenGL(或 DirectX,但我更喜欢前者,因为它是多平台的)中进行绘图。那会有帮助吗?你知道 OpenGL 的任何平铺(或一般像素绘图)教程吗?参考书籍也有帮助。
我现在也不做多线程(事实上我对那是什么只有一个模糊的概念)。我应该尝试多线程抽屉吗?或者 OpenGL 会让图形的多线程变得多余?
谢谢。
【问题讨论】:
-
XNA4.0 在我提出问题两周后问世。我试过了,喜欢它,然后切换到它。 XNA 隐式管理 DirectX,因此可以让自己的精灵四处飘荡,而无需担心任何事情。非常好。我的一个朋友使用 WPF。这也很好用,但我认为您需要了解一点 DirectX(问题不大)。再次感谢您的精彩回答,伙计们。
标签: c# graphics c#-4.0 tiles sprite