当前位置:网站首页>DirectX 入门知识
DirectX 入门知识
2022-07-27 13:34:00 【清水迎朝阳】
目录
4)软件驱动设备(software driverdevice)
一、DirectX 简介
DirectX 是 Windows 中的一组组件,允许软件(主要且尤其是游戏)直接与视频和音频硬件结合使用。 使用 DirectX 的游戏可以更有效地使用内置于硬件的多媒体加速器功能,从而改善你的整体多媒体体验。
1、检查DirectX 版本
Windows 10
从“开始”的搜索框中键入 dxdiag,然后按 Enter 键。
从结果中点按或单击 dxdiag。
在“系统信息”部分中报告的第一页上检查“DirectX 版本”。


2、D3D示例
微软d3d 示例 仓库
二、基本概念了解
不了解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
边栏推荐
- log4j2 jdbc appender
- codeforces 1708E - DFS Trees
- Ten thousand words detailed Google play online application standard package format AAB
- Understand JS execution context in an article
- mysql保存数据提示:Out of range value for column错误
- Airport cloud business sign analysis
- poj3461 Oulipo【KMP】
- 正向代理与反向代理
- Docker实践经验:Docker 上部署 mysql8 主从复制
- 网上券商APP开户安全有保障吗?
猜你喜欢

架构——MVC的升华

Chapter 3 business function development (add clues and remarks, and automatically refresh the added content)

Toward Fast, Flexible, and Robust Low-Light Image Enhancement(实现快速、灵活和稳健的弱光图像增强)CVPR2022

Advanced MySQL III. storage engine

自动化配置SSH免密登录和取消SSH免密配置脚本

万字详解 Google Play 上架应用标准包格式 AAB

【STM32】EXTI

Rtl8762dk environment construction (I)
![[popular science] the difference and connection between accuracy and resolution](/img/12/efcce1f6b8801d8d8b08b79818632c.png)
[popular science] the difference and connection between accuracy and resolution

One of yolox improvements: add CBAM, Se, ECA attention mechanism
随机推荐
在Oracle VirtualBox中导入Kali Linux官方制作的虚拟机
SLAM综述阅读笔记七:Visual and Visual-Inertial SLAM: State of the Art, Classification,and Experimental 2021
Advanced MySQL III. storage engine
【STM32】EXTI
telnet远程登录aaa模式详解【华为eNSP】
Golang excellent open source project summary
Unity3D学习笔记10——纹理数组
基于招聘广告的岗位人才需求分析框架构建与实证研究
User question understanding and answer content organization for epidemic disease Science Popularization
次小生成树【模板】
面向不平衡数据的电子病历自动分类研究
连接ResourceManager 失败
Interview eight part essay · TCP protocol
HDU4565 So Easy! [matrix multiplication] [derivation]
Navicate reports an error access violation at address 00000000
Forward proxy and reverse proxy
@Detailed explanation of repository
Slam overview Reading Note 7: visual and visual intangible slam: state of the art, classification, and empirical 2021
Chapter 3 business function development (view clue details)
Arduino+ze08-ch2o formaldehyde module, output formaldehyde content