DirectX 入门知识
目錄
一、DirectX 簡介
1、檢查DirectX 版本
2、D3D示例
二、基本概念了解
1、對設備的理解:
1)硬件設備(hardware device)
2)WARP設備(WARPdevice)
3)參考設備(reference device)
4)軟件驅動設備(software driverdevice)
2、對交換鏈swapchain的理解
1)對撕裂現象的理解
2)Direct3D 提供兩種避免撕裂的選項:
3)對交換的理解
一、DirectX 簡介
DirectX 是 Windows 中的一組組件,允許軟件(主要且尤其是游戲)直接與視頻和音頻硬件結合使用。? 使用 DirectX 的游戲可以更有效地使用內置于硬件的多媒體加速器功能,從而改善你的整體多媒體體驗。?
1、檢查DirectX 版本
Windows 10
從“開始”的搜索框中鍵入?dxdiag,然后按 Enter 鍵。
從結果中點按或單擊?dxdiag。
在“系統信息”部分中報告的第一頁上檢查“DirectX 版本”。
2、D3D示例
微軟d3d 示例 倉庫
GitHub - microsoft/DirectX-Graphics-Samples: This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.
二、基本概念了解
不了解D3D的一些概念,直接看代碼,簡直就如天書一般,所以才入學者,以了解基本概念為主
1、對設備的理解:
在Direct3D 中我們能使用的設備有硬件設備(hardware device),參考設備(reference device),軟件驅動設備(software driver device), 以及WARP設備 (WARP device)。
1)硬件設備(hardware device)
? ? ? ?是一個運行在顯卡上的D3D設備,在所有設備中運行速度是最快的。這將是我們日后討論最多的一種類型。
2)WARP設備(WARPdevice)
? ? ? ?是一種高效的CPU渲染設備,可以模擬現階段所有的Direct3D特性。WARP使用了Windows Vista /Windows 7/Winodws 8中的Windows Graphic 運行庫中高度優化過的代碼作為支撐,這讓這種方式出類拔萃,相比與上文提到的參考設備(reference device)模式更加優秀。WARP設備在配置不高的機器上面可以達到化腐朽為神奇的功效。在我們的硬件不支持實時應用程序(real-time application)的情況下,用WARP設備作為替補是一個明智的選擇,因為相比而言,參考設備(reference device)的執行效率實在是無法令人恭維。即便如此,WARP設備的執行效率還是不能和硬件設備同日而語,畢竟它依舊是對硬件的一種模擬,即使這種模擬是非常高效的。
3)參考設備(reference device)
? ? ? ? ?是用于沒有可用的硬件支持時在CPU上進行渲染的設備。
? ? ? ? ?簡言之就是利用軟件,在CPU對硬件渲染設備的一個模擬。但是不幸的是,這種方式非常的低效,所以在開發過程中,沒有其他可用選擇的時候,我們才采用這種方式。比如新一代的DirectX發布了,市面上還沒有支持這種新版本DirectX的硬件,我們在開發過程中就只能采用這種方式來跑了。
4)軟件驅動設備(software driverdevice)
? ? ? 是開發人員自己編寫的用于Direct3D的渲染驅動軟件。這種方式通常不推薦用于高性能或者對性能要求苛刻的應用程序.
參考:
Direct3D 11入門級知識介紹 - jack船長大哥 - 博客園
2、對交換鏈swapchain的理解
交換鏈是用于向用戶顯示幀的緩沖區集合。 應用程序每次提供要顯示的新幀時,交換鏈中的第一個緩沖區將替代已顯示的緩沖區。 此過程稱為交換或翻轉。
1)對撕裂現象的理解
? ? ? 圖形適配器有一個指向圖面的指針,該圖面表示監視器上正在顯示的圖像,稱為前臺緩沖區。 隨著監視器不斷刷新,圖形卡會將前臺緩沖區中的內容發送至監視器進行顯示。 但是,這會導致呈現實時圖形時出現問題。 該問題的核心是,監視器刷新頻率與計算機其余部分相比非常緩慢。 通常刷新頻率介于 60 Hz(每秒 60 次)到 100 Hz 之間。 如果你的應用程序在監視器刷新過程中更新前臺緩沖區,顯示的圖像將被截成兩半,上半部分包含舊圖像,下半部分包含新圖像。 此問題被稱為撕裂。
2)Direct3D 提供兩種避免撕裂的選項:
? ? ? ?一種選項只允許監視器在垂直回掃(或垂直同步)操作時更新。 監視器刷新圖像的方式通常是水平移動光針,從監視器左上角開始,Z 字形移動到右下角。 光針達到底部后,監視器將重新校準,將其移回左上角,重新開始刷新過程。 此重新校準過程稱為垂直同步。在垂直同步期間,監視器不會繪制任何內容,因此在監視器再次開始繪制之前,不會看到對前臺緩沖區所做的任何更新。 垂直同步相對較慢,但是,還不足以在等待時渲染復雜場景。 若要避免撕裂,同時能夠渲染復雜場景,則需要進行后臺緩沖。
? ? ? ?一種選項使用后臺緩沖技術。 后臺緩沖是向屏幕外圖面(稱為后臺緩沖區)繪制場景的過程。 請注意,除前緩沖區以外的任何圖面都稱為屏幕外圖面,因為它從未由監視器直接查看。 通過使用后臺緩沖區,應用程序可以在系統空閑時(即沒有正在等待處理的 Windows 消息時)自由渲染場景,而無需考慮監視器刷新頻率。 后臺緩沖帶來了另一個問題:如何以及何時將后臺緩沖區移至前臺緩沖區。
3)對交換的理解
? ? ? ?后臺緩沖區移至前臺緩沖區的過程稱為圖面翻轉。
? ? ? ?由于圖形卡只使用指向代表前臺緩沖區的圖面的指針,所以只需更改指針就可以將后臺緩沖區移至前臺緩沖區。
? ? ? ?當應用程序要求 Direct3D 將后臺緩沖區顯示到前臺緩沖區時,Direct3D 只需“翻轉”兩種圖面指針。 結果是后臺緩沖區變成新的前臺緩沖區,而舊的前臺緩沖區則變成了新的后臺緩沖區。
? ? ? 每當應用程序要求 Direct3D 設備顯示后臺緩沖區時,就會調用圖面翻轉;但是,可以將 Direct3D 設置為將請求加入隊列,直到發生垂直同步。 此選項稱為 Direct3D 設備的顯示間隔。 請注意,新的后退緩沖區中的數據可能不可重用,具體取決于應用程序如何指定 Direct3D 如何處理圖面翻轉。
? ? ? ?圖面翻轉在多媒體、動畫和游戲軟件中非常關鍵;其原理相當于用一沓紙來制作動畫。 在每頁紙上,藝術家對圖形稍加改動,當你快速翻動紙張時,圖畫就會呈現出動畫效果。
參考:
什么是交換鏈? (Direct3D 9) - Win32 apps | Microsoft Docs
Direct3D 11入門級知識介紹 - jack船長大哥 - 博客園
使用 DirectX 設備資源 - Win32 apps | Microsoft Docs
總結
以上是生活随笔為你收集整理的DirectX 入门知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(3087):vue+eleme
- 下一篇: java8新特性stream深入解析