2016-05-24 17 views
-1

Вчера я начал изучать, как использовать directx. Я использовал this учебник.Directx visual studio 2015

using System; 
using System.Drawing; 
using System.Windows.Forms; 
using Microsoft.DirectX; 
using Microsoft.DirectX.Direct3D; 
namespace _0005_directx_creating_a_device 
{ 
    public class CreateDevice : Form 
    { 
     Device device = null; 



    public CreateDevice() 
     { 
      this.ClientSize = new System.Drawing.Size(400, 300); 
      this.Text = "D3D Tutorial 01: CreateDevice"; 
     } 
     public bool InitializeGraphics() 
     { 
      try 
      { 
       PresentParameters presentParams = new PresentParameters(); 
       presentParams.Windowed = true; 
       presentParams.SwapEffect = SwapEffect.Discard; 
       device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); 
       return true; 
      } 
      catch (DirectXException) 
      { 
       return false; 
      } 
     } 
     static void Main() 
     { 
      using (CreateDevice frm = new CreateDevice()) 
      { 
       if (!frm.InitializeGraphics()) 
       { 
        MessageBox.Show("Nem sikerült elindítani a DirectX-et!"); 
        return; 
       } 
       frm.Show(); 
       // 
       while(frm.Created) 
       { 
        frm.Render(); 
        Application.DoEvents(); 
       } 
      } 
     } 
     private void Render() 
     { 
      if (device == null) 
       return; 
      device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0f, 0); 
      device.BeginScene(); 
      device.EndScene(); 
      device.Present(); 
     } 
    } 
} 

Моя проблема в том, что когда я пытаюсь запустить эту программу, консоль появляется, чем ничего не происходит. Я связывал каждую ссылку. Я использую Windows 10 и Visual Studio 2015. Любая идея, почему это ничего не делает?

Спасибо!

+0

Это выглядит как [Управляемый DirectX] (https://en.wikipedia.org/wiki/DirectX#.NET_Framework), АНИ, который умер более чем десять лет назад. Это преемник ([XNA] (https://en.wikipedia.org/wiki/Microsoft_XNA)) также мертв. Посмотрите на что-то вроде [SharpDX] (http://sharpdx.org/) в качестве альтернативы. – MooseBoys

ответ

1

Это устаревшие управляемые API DirectX 1.1, которые не обновлялись за десятилетие. Они были созданы для .NET 1.1 и несовместимы с .NET 4.x.

Для разработки C# Direct3D вы должны использовать SlimDX, SharpDX, MonoGame или коммерческий движок, например Unity.

Для C# Direct2D/DirectWrite рассмотрите возможность использования Win2D.

DirectX and .NET См

+0

Спасибо. Я проверю это :) –