日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DirectX 入门知识

發(fā)布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DirectX 入门知识 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

一、DirectX 簡介

1、檢查DirectX 版本

2、D3D示例

二、基本概念了解

1、對設(shè)備的理解:

1)硬件設(shè)備(hardware device)

2)WARP設(shè)備(WARPdevice)

3)參考設(shè)備(reference device)

4)軟件驅(qū)動設(shè)備(software driverdevice)

2、對交換鏈swapchain的理解

1)對撕裂現(xiàn)象的理解

2)Direct3D 提供兩種避免撕裂的選項:

3)對交換的理解


一、DirectX 簡介

DirectX 是 Windows 中的一組組件,允許軟件(主要且尤其是游戲)直接與視頻和音頻硬件結(jié)合使用。? 使用 DirectX 的游戲可以更有效地使用內(nèi)置于硬件的多媒體加速器功能,從而改善你的整體多媒體體驗。?

1、檢查DirectX 版本

Windows 10

  • 從“開始”的搜索框中鍵入?dxdiag,然后按 Enter 鍵。

  • 從結(jié)果中點按或單擊?dxdiag

  • 在“系統(tǒng)信息”部分中報告的第一頁上檢查“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的一些概念,直接看代碼,簡直就如天書一般,所以才入學(xué)者,以了解基本概念為主

    1、對設(shè)備的理解:

    在Direct3D 中我們能使用的設(shè)備有硬件設(shè)備(hardware device),參考設(shè)備(reference device),軟件驅(qū)動設(shè)備(software driver device), 以及WARP設(shè)備 (WARP device)。

    1)硬件設(shè)備(hardware device)

    ? ? ? ?是一個運行在顯卡上的D3D設(shè)備,在所有設(shè)備中運行速度是最快的。這將是我們?nèi)蘸笥懻撟疃嗟囊环N類型。

    2)WARP設(shè)備(WARPdevice)

    ? ? ? ?是一種高效的CPU渲染設(shè)備,可以模擬現(xiàn)階段所有的Direct3D特性。WARP使用了Windows Vista /Windows 7/Winodws 8中的Windows Graphic 運行庫中高度優(yōu)化過的代碼作為支撐,這讓這種方式出類拔萃,相比與上文提到的參考設(shè)備(reference device)模式更加優(yōu)秀。WARP設(shè)備在配置不高的機器上面可以達到化腐朽為神奇的功效。在我們的硬件不支持實時應(yīng)用程序(real-time application)的情況下,用WARP設(shè)備作為替補是一個明智的選擇,因為相比而言,參考設(shè)備(reference device)的執(zhí)行效率實在是無法令人恭維。即便如此,WARP設(shè)備的執(zhí)行效率還是不能和硬件設(shè)備同日而語,畢竟它依舊是對硬件的一種模擬,即使這種模擬是非常高效的。

    3)參考設(shè)備(reference device)

    ? ? ? ? ?是用于沒有可用的硬件支持時在CPU上進行渲染的設(shè)備。

    ? ? ? ? ?簡言之就是利用軟件,在CPU對硬件渲染設(shè)備的一個模擬。但是不幸的是,這種方式非常的低效,所以在開發(fā)過程中,沒有其他可用選擇的時候,我們才采用這種方式。比如新一代的DirectX發(fā)布了,市面上還沒有支持這種新版本DirectX的硬件,我們在開發(fā)過程中就只能采用這種方式來跑了。

    4)軟件驅(qū)動設(shè)備(software driverdevice)

    ? ? ? 是開發(fā)人員自己編寫的用于Direct3D的渲染驅(qū)動軟件。這種方式通常不推薦用于高性能或者對性能要求苛刻的應(yīng)用程序.

    參考:

    Direct3D 11入門級知識介紹 - jack船長大哥 - 博客園

    2、對交換鏈swapchain的理解

    交換鏈是用于向用戶顯示幀的緩沖區(qū)集合。 應(yīng)用程序每次提供要顯示的新幀時,交換鏈中的第一個緩沖區(qū)將替代已顯示的緩沖區(qū)。 此過程稱為交換或翻轉(zhuǎn)。

    1)對撕裂現(xiàn)象的理解

    ? ? ? 圖形適配器有一個指向圖面的指針,該圖面表示監(jiān)視器上正在顯示的圖像,稱為前臺緩沖區(qū)。 隨著監(jiān)視器不斷刷新,圖形卡會將前臺緩沖區(qū)中的內(nèi)容發(fā)送至監(jiān)視器進行顯示。 但是,這會導(dǎo)致呈現(xiàn)實時圖形時出現(xiàn)問題。 該問題的核心是,監(jiān)視器刷新頻率與計算機其余部分相比非常緩慢。 通常刷新頻率介于 60 Hz(每秒 60 次)到 100 Hz 之間。 如果你的應(yīng)用程序在監(jiān)視器刷新過程中更新前臺緩沖區(qū),顯示的圖像將被截成兩半,上半部分包含舊圖像,下半部分包含新圖像。 此問題被稱為撕裂。

    2)Direct3D 提供兩種避免撕裂的選項:

    ? ? ? ?一種選項只允許監(jiān)視器在垂直回掃(或垂直同步)操作時更新。 監(jiān)視器刷新圖像的方式通常是水平移動光針,從監(jiān)視器左上角開始,Z 字形移動到右下角。 光針達到底部后,監(jiān)視器將重新校準,將其移回左上角,重新開始刷新過程。 此重新校準過程稱為垂直同步。在垂直同步期間,監(jiān)視器不會繪制任何內(nèi)容,因此在監(jiān)視器再次開始繪制之前,不會看到對前臺緩沖區(qū)所做的任何更新。 垂直同步相對較慢,但是,還不足以在等待時渲染復(fù)雜場景。 若要避免撕裂,同時能夠渲染復(fù)雜場景,則需要進行后臺緩沖。

    ? ? ? ?一種選項使用后臺緩沖技術(shù)。 后臺緩沖是向屏幕外圖面(稱為后臺緩沖區(qū))繪制場景的過程。 請注意,除前緩沖區(qū)以外的任何圖面都稱為屏幕外圖面,因為它從未由監(jiān)視器直接查看。 通過使用后臺緩沖區(qū),應(yīng)用程序可以在系統(tǒng)空閑時(即沒有正在等待處理的 Windows 消息時)自由渲染場景,而無需考慮監(jiān)視器刷新頻率。 后臺緩沖帶來了另一個問題:如何以及何時將后臺緩沖區(qū)移至前臺緩沖區(qū)。

    3)對交換的理解

    ? ? ? ?后臺緩沖區(qū)移至前臺緩沖區(qū)的過程稱為圖面翻轉(zhuǎn)。

    ? ? ? ?由于圖形卡只使用指向代表前臺緩沖區(qū)的圖面的指針,所以只需更改指針就可以將后臺緩沖區(qū)移至前臺緩沖區(qū)。

    ? ? ? ?當(dāng)應(yīng)用程序要求 Direct3D 將后臺緩沖區(qū)顯示到前臺緩沖區(qū)時,Direct3D 只需“翻轉(zhuǎn)”兩種圖面指針。 結(jié)果是后臺緩沖區(qū)變成新的前臺緩沖區(qū),而舊的前臺緩沖區(qū)則變成了新的后臺緩沖區(qū)。

    ? ? ? 每當(dāng)應(yīng)用程序要求 Direct3D 設(shè)備顯示后臺緩沖區(qū)時,就會調(diào)用圖面翻轉(zhuǎn);但是,可以將 Direct3D 設(shè)置為將請求加入隊列,直到發(fā)生垂直同步。 此選項稱為 Direct3D 設(shè)備的顯示間隔。 請注意,新的后退緩沖區(qū)中的數(shù)據(jù)可能不可重用,具體取決于應(yīng)用程序如何指定 Direct3D 如何處理圖面翻轉(zhuǎn)。

    ? ? ? ?圖面翻轉(zhuǎn)在多媒體、動畫和游戲軟件中非常關(guān)鍵;其原理相當(dāng)于用一沓紙來制作動畫。 在每頁紙上,藝術(shù)家對圖形稍加改動,當(dāng)你快速翻動紙張時,圖畫就會呈現(xiàn)出動畫效果。

    參考:

    什么是交換鏈? (Direct3D 9) - Win32 apps | Microsoft Docs

    Direct3D 11入門級知識介紹 - jack船長大哥 - 博客園

    使用 DirectX 設(shè)備資源 - Win32 apps | Microsoft Docs

    總結(jié)

    以上是生活随笔為你收集整理的DirectX 入门知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。