【求助】C# DX Sprite.Draw问题
问题:本人用Microsoft.DirectX.Direct3D.Sprite类的Draw方法绘制图形只能保持7秒左右,之后Draw就无法绘图了,但是程序没有报错。Texture等都是正确的。找不着原因真是蛋疼啊!!!!!!!!!!!!
DX SDK版本:Microsoft DirectX SDK (June 2010)
源码如下:
C# DirectX Sprite.Draw 时间短 --------------------编程问答-------------------- 前面是对的。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.DirectX;
using Microsoft.DirectX.Direct3D;
class Sprites : Form
{
private Device device;
private Sprite sprite;
private Texture texture;
public Sprites()
{
InitializeComponent();
}
private void OnDeviceReset(object sender, EventArgs e)
{
texture = TextureLoader.FromFile(device, "image.png");
}
private void init()
{
PresentParameters present;
this.Text = "Using Sprites";
this.MinimizeBox = false;
present = new PresentParameters();
present.Windowed = true;
present.SwapEffect = SwapEffect.Discard;
device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, present);
device.DeviceReset += new EventHandler(OnDeviceReset);
sprite = new Sprite(device);
OnDeviceReset(null, EventArgs.Empty);
}
private void render()
{
device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
device.BeginScene();
sprite.Begin(SpriteFlags.SortTexture | SpriteFlags.AlphaBlend);
//大概是7秒,7秒之后下面这句执行了,图却画不出。
sprite.Draw(texture, Vector3.Empty, new Vector3(0, 5, 0), Color.White.ToArgb());
sprite.End();
device.EndScene();
device.Present();
}
private void InitializeComponent()
{
this.SuspendLayout();
this.ClientSize = new System.Drawing.Size(292, 266);
this.Name = "Sprites";
this.Load += new System.EventHandler(this.Sprites_Load);
this.ResumeLayout(false);
}
private void Sprites_Load(object sender, EventArgs e)
{
init();
this.Show();
while (true)
{
render();
Application.DoEvents();
}
}
}
几秒过后图就画不出了,不知道什么原因。
--------------------编程问答-------------------- 你们都没遇到过么? --------------------编程问答-------------------- 除
补充:.NET技术 , C#