目录

一、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

  1. 从“开始”的搜索框中键入 dxdiag,然后按 Enter 键。

  2. 从结果中点按或单击 dxdiag

  3. 在“系统信息”部分中报告的第一页上检查“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 入门知识相关推荐

  1. 游戏开发新手入门之DirectX入门

    游戏开发新手入门之DirectX入门 [文章导读]       今天我们要接触到令人敬畏的DirectX.它比Windows GDI要快好几倍,可用于不同的语言和多种平台 [正文] ☆ 简介 今天我们 ...

  2. java圆周率流程图,流程图、PI图入门知识 课件.doc

    流程图.PI图入门知识 课件 流程图.PI图入门知识 基本定义 工艺流程图﹙又叫PI图﹚,通过图解的形式,表示出在化工生产过程中,由原料制得产品过程的物料和能量发生的变化及其流向:表示出生产中采用的化 ...

  3. 和与余数的和同余理解_5 同余 ——数论入门知识讲解系列

    数学竞赛 数论是纯粹数学的分支之一,主要研究整数的性质,按研究方法分为初等数论和高等数论.中学生(甚至小学生)课外数学兴趣小组的许多内容是属于初等数论的,各级别数学竞赛也会把初等数论作为重点内容进行考 ...

  4. python 快速排序_小白入门知识详解:Python实现快速排序的方法(含实例代码)...

    前言: 今天为大家带来的内容是:小白入门知识详解:Python实现快速排序的方法(含实例代码)希望通过本文的内容能够对各位有所帮助,喜欢的话记得点赞转发收藏不迷路哦!!! 提示: 这篇文章主要介绍了P ...

  5. oracle入门知识实施,新手必须了解的oracle入门知识

    欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 oracle入门知识 一个表空间只能属于一个数据库每个数据库最少有一个控制文件(建议3个,分别放在不同的磁盘上) 每个数 ...

  6. ruby网站部署到服务器,入门知识: 把代码部署到服务器, SSH

    入门知识: 把代码部署到服务器, SSH 2015-07-28 16:28 访问量: 2868 分类: 技术 如何登陆远程服务器呢? $ ssh root@your.server.com -p 334 ...

  7. python自学需要哪些基础知识-零基础学Python应该学习哪些入门知识及学习步骤安排...

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  8. 学python需要什么基础知识-学习Python需要知道哪些基础入门知识?

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python就业前景广阔.很多 ...

  9. python自学步骤-零基础学Python应该学习哪些入门知识及学习步骤安排

    众所周知,Python以优雅.简洁著称,入行门槛低,可以从事Linux运维.Python Web网站工程师.Python自动化测试.数据分析.人工智能等职位!就目前来看,Python岗位人才缺口高达4 ...

  10. MySql入门知识(一)

    概述 MySQL是一个真正多用户,多线程结构化查询语言数据库服务器.MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司.MySQL的SQL语言是用于访问数据 ...

最新文章

  1. 岗位推荐 | 微软小冰团队招聘数据挖掘/算法工程师实习生
  2. [html] W3C--span is a nested element.
  3. TemplateComponent.setContainer Component runAsOwner getStable ID and xml view creation
  4. Spring IOC 之解析Bean:解析 import 标签
  5. 狂神说Springboot
  6. 06.输入系统:第10课第20节_输入系统_多点触摸_电容屏驱动程序
  7. 【JAVA长虹键法】第七式 建造者模式(23种设计模式)
  8. php strstr批量替换,也就这样,
  9. formality 命令/变量的使用及各种设置
  10. 21北邮计算机专硕与学硕科目,【21考研】研考必知!对考英语、数学、专硕、学硕、专科考研都有用!...
  11. Learning Image Conditioned Label Space for Multilabel Classification
  12. BZOJ1721 Ski Lift 缆车支柱
  13. overleaf怎么输入中文_【LATEX】在线latex排版工具Overleaf-制作中文简历-详细教程...
  14. java归并排序详解
  15. 屏幕分辨率、屏幕尺寸、屏幕像素、屏幕密度完全解析
  16. rsi红绿多空波段副图指标 rsi指标公式趋势,兼容通达信公式
  17. 推荐一个基于 Vue 的前端界面可视化设计器项目
  18. SQL 入门的必读好书
  19. Simulink代码生成: Model Reference及其代码
  20. 无人驾驶技术——雷达截面和距离方程

热门文章

  1. 沧小海笔记之PCIE协议解析——目录
  2. C语言考试知识点汇总(理论知识点)
  3. 【Hadoop】Hadoop大数据架构及关键组件
  4. 计算机毕业设计Java安路友汽车租赁(源码+系统+mysql数据库+lw文档
  5. idea设置护眼主题
  6. 九个你必须掌握的Java新手基础项目
  7. PDF有编辑密码怎么办?该怎么去除
  8. Ubuntu18.04 下的Gif录制工具
  9. 用户故事与敏捷方法—一些用户故事(实战二)
  10. eclipse配置java开发环境_Java中Eclipse开发环境配置