本文將告訴大家如何使用 Vortice 底層庫從零開始 , 從一個(gè)控制臺(tái)項(xiàng)目 , 開始搭建一個(gè)最簡單的使用 Direct2D1 的 DirectX 應(yīng)用 。本文屬于入門級(jí)博客 , 期望本文能讓大家了解 Vortice 底層庫是可以如何調(diào)用 DirectX 的功能 , 以及了解 DirectX 中 , 特別是 D2D 部分的初始化邏輯
在開始聊 Vortice 之前 , 必須要先聊聊 SharpDx 庫 。眾所周知 , 現(xiàn)在 SharpDx 已不維護(hù) , 盡管 SharpDx 的不維護(hù)對(duì)咱開發(fā)影響很小 , 除非需要用到這幾年新加的功能 , 否則使用不維護(hù)的 SharpDx 的問題也不大 。而 Vortice 是作為 SharpDx 的一個(gè)代替的存在 , 是從 SharpDx 的基礎(chǔ)上 , 繼續(xù)開發(fā)的一個(gè)項(xiàng)目 。使用 Vortice 底層庫 , 能讓 C# 代碼比較方便的和 DirectX 對(duì)接
從設(shè)計(jì)上 , 此 Vortice 庫和 SharpDx 是對(duì) DirectX 的低級(jí)封裝 , 低級(jí)封裝意味著將會(huì)讓咱在開發(fā)時(shí) , 必須了解非常的細(xì)節(jié) , 但同時(shí)也帶來了可以進(jìn)行底層優(yōu)化的可能
可以代替 SharpDx 的庫 , 除了 Vortice 之外 , 還有很多 , 詳細(xì)請(qǐng)看 SharpDx 的代替項(xiàng)目
在開始閱讀本文之前 , 我期望讀者已了解很多相關(guān)的知識(shí) , 例如 Win32 的概念 , 以及 DirectX 是什么 , 和 .NET 框架的基礎(chǔ)知識(shí)加 C# 的基礎(chǔ)語法等知識(shí) 。盡管本文屬于入門級(jí)博客 , 但不會(huì)涉及到過于基礎(chǔ)的知識(shí)
想要開始使用 D2D 繪制內(nèi)容 , 就需要有一個(gè)用來承載繪制內(nèi)容的 "畫布" 對(duì)象 , 在 D2D 里面 , 對(duì)應(yīng)的就是一個(gè) ID2D1RenderTarget 類型的對(duì)象
為了能在屏幕上能看到繪制的內(nèi)容 , 那最好是有一個(gè)窗口用來顯示繪制內(nèi)容 。當(dāng)然 , 使用離屏渲染也可以 , 只是用離屏渲染的話 , 自然有離屏渲染的自帶的坑再加上為了能看到渲染內(nèi)容而做的編碼為圖片的坑 , 這就讓入門博客不友好了 。本文將通過 Win32 的方式一步步創(chuàng)建窗口 , 盡可能告訴大家更多的細(xì)節(jié)
本文使用的步驟如下:
- 創(chuàng)建一個(gè) Win32 窗口
- 創(chuàng)建 D3D11 的設(shè)備 , 和交換鏈 , 將 D3D 掛到窗口上
- 通過 DXGI 配合 D3D11 創(chuàng)建 D2D 的 ID2D1RenderTarget 進(jìn)行繪制修改顏色
使用非 VisualStudio 作為 IDE 的 , 那推薦本文看著玩就好了 , 不要去嘗試本文的代碼
新建一個(gè) dotnet 6 的控制臺(tái)項(xiàng)目
接下來咱將從這個(gè)控制臺(tái)項(xiàng)目開始 , 編寫 D2D 應(yīng)用
本文貼出的代碼只有部分 , 如果構(gòu)建不通過 , 推薦到本文的最后獲取整個(gè)項(xiàng)目的代碼 。本文的所有的源代碼可在本文的最后找到下載方式
安裝庫找到咱 dotnet 的慣例 , 在使用某個(gè)庫之前 , 就是使用 NuGet 安裝庫
本文需要安裝以下的 NuGet 庫:
- Vortice.Direct2D1
- Vortice.Direct3D11
- Vortice.DirectX
- Vortice.D3DCompiler
- Vortice.Win32
- Microsoft.Windows.CsWin32
<ItemGroup><PackageReference Include="Vortice.Direct2D1" Version="2.1.32" /><PackageReference Include="Vortice.Direct3D11" Version="2.1.32" /><PackageReference Include="Vortice.DirectX" Version="2.1.32" /><PackageReference Include="Vortice.D3DCompiler" Version="2.1.32" /><PackageReference Include="Vortice.Win32" Version="1.6.2" /><PackageReference Include="Microsoft.Windows.CsWin32" PrivateAssets="all" Version="0.2.63-beta" /></ItemGroup>
經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 為什么阿里Java開發(fā)手冊(cè)不推薦使用Timestamp
- VMware安裝Win11+WSA子系統(tǒng)和使用教程
- 拱辰享適合什么膚質(zhì)的人使用?
- 護(hù)衣留香珠的使用方法?
- 悅薇水乳適合多大年紀(jì)的人使用?
- 怡麗絲爾護(hù)膚品適合多大年齡的人使用?
- 御泥坊眼膜貼適合什么年齡段的人使用?
- 御泥坊五件套使用步驟是什么?
- 御泥坊小金瓶適合什么人群使用?
- 御泥坊小金瓶適合什么年齡使用?
