標籤:directx
1.如何查看原生DirectX的版本:
點“開始”-“運行”,在“運行”裡輸入“dxdiag”斷行符號,彈出DirectX 診斷工具視窗,就在首頁中,有很多系統資訊,最下面一條就是DirectX版本。
2.添加DirectX類庫的引用:
建立WinForm表單應用程式,然後添加三個Reference(引用),分別是:Microsoft.DirectX、Microsoft.DirectX.Direct3D 和Microsoft.DirectX.Direct3DX,
3.第一個DirectX程式:
首先介紹一下Device類,Device類用於完成DirectX 裡所有繪圖操作,我們可以把這個類假想為圖形卡,情境裡所有其他繪圖物件都依賴於Device,電腦裡可以有多個Device
對象。所以在全域變數中定義一個繪圖裝置,如下代碼:
Device device = null;//定義繪圖裝置
其次先定義一個初始化函數:InitializeDirect3D(),它將告訴繪圖裝置如何去渲染到螢幕上以及一些異常的處理,如下代碼:
public bool InitializeDirect3D() { try { PresentParameters presentParams = new PresentParameters(); presentParams.Windowed = true; //指定以Windows表單形式顯示 presentParams.SwapEffect = SwapEffect.Discard; //當前螢幕繪製後它將自動從記憶體中刪除 device = new Device(0, DeviceType.Hardware, this, CreateFlags.SoftwareVertexProcessing, presentParams); //執行個體化device對象 return true; } catch (DirectXException e) { MessageBox.Show(e.ToString(), "Error"); //處理異常 return false; } }
接著我們要定義渲染函數Render(),代碼如下:
public void Render() { if (device == null) //如果device為空白則不渲染 { return; } device.Clear(ClearFlags.Target, Color.Red, 1.0f, 0); //清除windows介面為紅色 device.BeginScene(); //在此添加渲染圖形代碼 device.EndScene(); device.Present(); }
最後定義程式入口即可,代碼如下:
static void Main() { Form1 frm1 = new Form1(); //建立表單對象 if (frm1.InitializeDirect3D() == false) //檢查Direct3D是否啟動 { MessageBox.Show("無法啟動Direct3D!", "錯誤!"); return; } frm1.Show(); //如果一切都初始化成功,則顯示表單 while (frm1.Created) //設定一個迴圈用於即時更新渲染狀態 { frm1.Render(); //保持device渲染,直到程式結束 Application.DoEvents(); //處理鍵盤滑鼠等輸入事件 } }
PS:完成後我運行時候報錯了,提示
原來是因為在.NET 4.0 下使用 Dirext3D 託管庫,出現“混合模式程式集是針對“v1.1.4322”版的運行時產生的,在沒有配置其他資訊的情況下,無法在 4.0 運行時中載入該程式集。”異常資訊,查看程式集Microsoft.DirectX.dll、Microsoft.DirectX.Direct3D.dll、Microsoft.DirectX.Direct3DX,發現其.NET 運行時版本時v1.1.4322,也就是說D3D託管庫是在 .NET v1.1 版本下編譯產生的。 在.NET4.0以前,由於程式運行環境本質還是.NET2.0,並且.NET2.0相容.NET1.0和1.1,但在升級到.NET4.0時,.NET的核心作了重大調整,以前在.Net2.0或.net3.5中產生的程式集,如果要在.net4.0下運行,需要在設定檔中指定此應用程式支援的通用語言執行平台版本和啟用 .NET Framework 2.0 運行時啟用策略,這時 修改App.config的內容即可,代碼如下:
<?xml version="1.0"?><configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0"/> </startup></configuration>
還可能出現一個錯誤是這樣的,
至於這個問題嘛,錯誤提示已經很清楚了,大家在組態管理員中建立為32位應用程式(即x86)即可,
運行後效果
本文源碼:http://download.csdn.net/detail/yangyisen0713/8385527
Visual C# 的DirectX開發系列一初識DirectX