C# Managed DirectX的Sprite绘图不显示咋办???
陈曦之光 2019-02-13 04:40:23 好吧。。。。。。
折腾了好几天终于有点成果了。。。。。。
我的要求也不高,只要能显示2d图像就行了。。。。
也会设置PresentParameters和Device了(最基础的)
第一次画的时候忘了每Render一遍就Clear一次,导致画的贴图出现了重影
于是便加了Clear........
但是这回绘制贴图的时候,不知道为什么总是画不出来
我心一横,立马for循环个100遍,这回倒是显示出来了,但是忽闪忽闪的
那就再狠点,1000遍!这回终于显示出来了,DX的效率优势也没了。。。。。。
咋办啊。。。。。
我原先是用TV3D的,因为认识的大神说引擎最重要的在于有人维护,还有社区,遇到问题能找到答案
TV3D这个引擎已经老的都快掉牙了,但是好歹底层也是DX啊。。。
这是初始化代码:
public void Init()
{
presentpaeameter=new PresentParameters();
presentpaeameter.Windowed=true;//显示模式,是窗口还是全屏
presentpaeameter.SwapEffect = SwapEffect.Discard;
device = new Device(0,DeviceType.Hardware,this,CreateFlags.MixedVertexProcessing,presentpaeameter);
tex = TextureLoader.FromFile(device, "C:\\Users\\xxpp321zz\\Desktop\\QQ图片20150503121043.jpg");
sprite = new Sprite(device);
rect = new Rectangle(0,0,400,200);
}
这是渲染代码:
public void Render()
{
while (this.Created)
{
try
{
device.Clear(ClearFlags.Target, Color.Black, 1f, 0);
device.BeginScene();
sprite.Begin(SpriteFlags.AlphaBlend);
for (int i = 0; i < 1000; i++)
{sprite.Draw2D(tex,Rectangle.Empty,rect,Cursor.Position,Color.Yellow);}
sprite.End();
device.EndScene();
device.Present();
Application.DoEvents();
}
catch (Direct3DXException e)
{
MessageBox.Show(Convert.ToString(e));
}
}
}
可以确定了图片没什么问题,去掉循环的话就什么也显示不出来了,循环了至少还能看见影子。。。。
好不容易下定决心要学DX(我用C#的),有没有大神能帮帮忙啊????