当前位置:编程学习 > C#/ASP.NET >>

【求助】C# DX Sprite.Draw问题

问题:本人用Microsoft.DirectX.Direct3D.Sprite类的Draw方法绘制图形只能保持7秒左右,之后Draw就无法绘图了,但是程序没有报错。Texture等都是正确的。
找不着原因真是蛋疼啊!!!!!!!!!!!!
DX SDK版本:Microsoft DirectX SDK (June 2010)
源码如下:

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();
            }
        }

    }



C# DirectX Sprite.Draw 时间短 --------------------编程问答-------------------- 前面是对的。

几秒过后图就画不出了,不知道什么原因。
--------------------编程问答-------------------- 你们都没遇到过么? --------------------编程问答-------------------- 除
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,