使用SlimDX绘制2D图形

3
你好,我在使用SlimDX时遇到了精灵渲染问题。它的绘制方式与.NET Drawing DrawImageUnscaled类似,会有一定的缩放。但是我没有使用任何变换。
初始化代码如下:
Vector2 position;
Sprite sprite;
Size size;
Texture texture;
sprite = new Sprite(Device);
string filename = /*some bitmap*/;
using (Image b = Bitmap.FromFile(filename))
  size = b.Size;

position = new Vector2(550, 230);
texture = Texture.FromFile(Device, filename);

渲染:

Device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
Device.BeginScene();
sprite.Begin(SpriteFlags.None);
sprite.Draw(texture, new Vector3(size.Width / 2, size.Height / 2, 0), new Vector3(position, 0), Color.White);
sprite.End();
Device.EndScene();

编辑:如果您不知道如何想象错误的渲染效果,这里是我得到的渲染和参考(忽略白色,它只是透明PNG)。请注意第一张图片是按比例缩放的。

错误的 正确的
2个回答

4

你的显卡是否存在绘制NPOT纹理(非二的幂次方)的问题?如果是,将纹理大小增加到下一个POT。这对于我解决了许多绘图问题(也使用了SlimDX)。

顺便说一句...我也使用SlimDX进行2D渲染,但没有使用精灵,而是将所有东西都绘制为“基元”,并使用顶点缓冲区。也许这也是一个选项。


2

在初始化精灵时添加Alpha混合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接