【发布时间】:2015-06-26 09:24:19
【问题描述】:
我创建了一个粒子系统,它可以绘制许多图元并为它们添加纹理。源精灵是一个具有透明度的 PNG 图像,但是当我使用下面的代码在 XNA 中绘制它时,透明区域被替换为黑色。如何保持这种透明度?
effect.View = camera.View;
effect.Projection = camera.Projection;
effect.World = Matrix.CreateBillboard(pos, camera.Pos, camera.Up, camera.Dir);
effect.Texture = texture;
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
g.DrawUserPrimitives(PrimitiveType.TriangleStrip, verts, 0, 2);
}
这是我设置顶点的代码:
float s = 0.25f; ; // initial size of a particle
verts[0].Position = new Vector3(-s, -s, 0);
verts[1].Position = new Vector3(+s, -s, 0);
verts[2].Position = new Vector3(-s, +s, 0);
verts[3].Position = new Vector3(+s, +s, 0);
verts[0].TextureCoordinate = new Vector2(0, 0);
verts[1].TextureCoordinate = new Vector2(1, 0);
verts[2].TextureCoordinate = new Vector2(0, 1);
verts[3].TextureCoordinate = new Vector2(1, 1);
verts[0].Color = Color.White;
verts[1].Color = Color.White;
verts[2].Color = Color.White;
verts[3].Color = Color.White;
希望有人可以帮助我。谢谢。
编辑:加载图片的代码::
smokeParticle = Content.Load<Texture2D>("particle_smoke");
【问题讨论】:
标签: c# xna textures transparency