MSDN DXGI Overview


DXGI是windows系统中用户模式下最底层的图形设备接口.
DXGI 直接与硬件驱动打交道.
DXGI对上提供a common framework for future graphics components.

应用程序可以直接访问DXGI. 或者通过Direct3D的API来访问,这些API帮你与DXGI进行通信.
如果你的应用需要枚举设备或者想要控制数据如何被输出,你可能需要直接与DXGI通信.

Enumerating Adapters 枚举适配器

适配器是一种 计算器软件和硬件能力 的抽象.
通常情况下,你的机器上会有很多适配器. 有一些设备在硬件上实现,有一些在软件上实现.
适配器实现 图形应用程序使用 的功能.

如图, 展示了一个计算机. 两个适配器(video card). 三个输出显示器(output monitor).

当枚举这些硬件时:
IDXGIOutput1: 每个硬件设备上可能有多个输出接口,因此每个接口对应一个Output;
IDXGIAdapter2: 对每一个video card(即便是集显),简单理解为一个硬件设备;

当枚举完成,使用 IDXGIFactory (完成枚举的主控工厂);

如果你想要选择指定的某个video hardware.
推荐对每一个adapter handle 迭代调用:
D3D11CreateDevice or D3D11CreateDeviceAndSwapChain
通过达到某个 feature level 来选择.

Each video card implements a certain level of Microsoft DirectX (DX) functionality depending on the graphics processing units (GPUs) installed.
每个视频卡根据GPU实现某种Level的DX能力.
如 9_1 feature level 被Direct3D 9实现 / 11_0 feature level 被Direct3D 11实现.
对于DX版本 / Shader models / feature levels 都有一个独特的编号系统:

  • Direct3D versions use a period; for example, Direct3D 12.0.
  • Shader models use a period; for example, shader model 5.1.
  • Feature levels use an underscore; for example, feature level 12_0.

Presentation 送显

你的应用的主要任务是: render frames,然后通知DXGI去显示这些帧到输出.
按照某个帧率来送显,可能需要不止两个buffer.

The set of buffers created is called a swap chain
创建的缓冲叫做交换链.
A swap chain has one front buffer and one or more back buffers.
交换链通常需要一个前置缓冲,和一个后者多个后置缓冲.

Create a Swap Chain 创建交换链

In DXGI, a swap chain is tied to a window when the swap chain is created.
在DXGI中,当一个交换链被创建,它会绑定到一个窗口. 这可以节约内存且提高performance.
之前的版本DX,允许改变交换链绑定的窗口.

In DXGI, a swap chain is tied to a rendering device on creation.
在DXGI中,一个交换链被绑定到一个渲染设备?

In DXGI, the swap effects available are DXGI_SWAP_EFFECT_DISCARD and DXGI_SWAP_EFFECT_SEQUENTIAL.
在DXGI中,一个交换效果是 DXGI_SWAP_EFFECT_DISCARD 和 DXGI_SWAP_EFFECT_SEQUENTIAL.

DISCARD 丢弃
SEQUENTIAL 顺序

Care and Feeding of the Swap Chain

TODO: Resize问题

DXGI Responses from DLLMain

由于做项目的时候就遇到了这个问题.
想在DLLMain中初始化DXGI使用DX,却反悔错误.
由于dll被加载和卸载的时机不能被保证.推荐不要在 DllMain 中使用DXGI和DX的方法.
为了防止这个问题:

  • If your app’s DllMain function releases its last reference to a DXGI factory, DXGI raises an exception.
  • If your app’s DllMain function creates a DXGI factory, DXGI returns an error code.

DX基础 | DXGI(DirectX Graphics Infrastructure)相关推荐

  1. DXGI——DirectX Graphics Infrastructure

    Windows MSDN:Windows DXGI Overview 一:介绍 可见DXGI是windows系统中用户模式下最底层的图形设备接口.不管是Direct 2D 还是 Direct 3D都基 ...

  2. 关于安装低版本DX错误问题 directx 10 1023

    我的电脑是win764 默认是dx11版本, 根据问题,尝试以下方法: 若要解决此问题,必须在安装2010年6月版DirectX SDK之前卸载所有版本的Visual C ++ 2010 Redist ...

  3. 【DirectX 2D游戏编程基础】DirectX精灵的创建

    首先,说明一下,我的博客里的代码均为完整代码,只要环境搭建没有问题,复制代码即可运行 工程文件下载地址:http://download.csdn.net/detail/shangdi712/90520 ...

  4. 1-初识DXGI与D3D

    1 D3D(Direct3D) 简介:显卡,又叫做3D加速卡.当我们希望调用显卡中的3D加速功能来进行某些优化时,无法直接通过操作系统或者应用程序调用显卡,而是通过系统提供的API.D3D就是其中一种 ...

  5. DirectX 总结

    DDS DirectXDraw Surface file format, .dds.这是微软从DirectX7开始引进的一种文件格式,它用来存储压缩的或未压缩的纹理,该格式支持mimaps cube ...

  6. DirectX 教程: DirectX Tutorial - Direct3D: Getting Started

    DirectX 教程: DirectX Tutorial - Direct3D: Getting Started 基本知识: 1. 图形硬件 随着显示技术的发展,显示器独立带有显存 2. DXGI ( ...

  7. c语言安卓图形库cairo,cairo 图形库

    简介 提到cairo,估计很少知道这还是一个图形库的名字(http://cairographics.org),Linux的两大流行桌面环境KDE和Gnome,其对应的基础组件是QT和GTK+,相对于框 ...

  8. cairo填充_cairo 图形库

    简介 提到cairo,估计很少知道这还是一个图形库的名字(http://cairographics.org),Linux的两大流行桌面环境KDE和Gnome,其对应的基础组件是QT和GTK+,相对于框 ...

  9. cairo填充_cairo图形库

    简介 提到cairo,估计很少知道这还是一个图形库的名字(http://cairographics.org),Linux的两大流行桌面环境KDE和Gnome,其对应的基础组件QT和GTK+,相对于框架 ...

  10. Oculus 0.7.0 SDK DX11渲染流程

    分四个大阶段:初始化(initialize),加载(load),渲染(render),销毁(release). 一.初始化 初始化DX11设备(DIRECTX.InitDevice),分以下几步: 1 ...

最新文章

  1. java第三章_Java 第三章
  2. Adaboost通俗易懂入门教程
  3. 如何批量转移大量的邮件?
  4. 微信python天天学_刚学Python一礼拜!我就能模拟登录微信公众号!我是天才吧!...
  5. linux 进程综合指令
  6. springboot启动流程
  7. (4)段描述符P,G位
  8. 建议收藏!数据分析和机器学习必备SQL技能
  9. 机器学习——SVM之交叉验证对参数(C,gamma)进行优化以及选择
  10. [转]深入浅出Java设计模式之备忘录模式
  11. mysql vfp_用 VFP 连接 MYSQL 数据库
  12. Jenkins自动部署SpringCloud项目
  13. python是动态还是静态_python之静态方法和动态方法介绍
  14. iOS:给图片置灰色
  15. krc 编辑 linux,krc文件怎么打开?krc是什么文件?
  16. 设计模式——责任链模式(职责链模式)
  17. 1实训(学生信息管理系统)
  18. Unity3D-Tilemap初体验(Unity自带Tilemap使用体验)
  19. web检查器要不要打开_简单粗暴,详细得不要不要的 JavaWeb快速入门
  20. 【游戏客户端】如何实现环形进度条

热门文章

  1. 微信小程序 布局对齐属性
  2. 51单片机C语言程序100例
  3. php 常见的视频格式转换
  4. R语言 常用的数据分析工具包
  5. TP5.1导出指定的多个日期的数据记录
  6. windows U盘分区方法
  7. 安装VMware出现Error 1406:could not write value installpath to key的解决办法
  8. 鼠标悬停微信图标显示二维码
  9. 【统计学笔记】正态概率图与Q-Q图
  10. 基于阿里开源的COLA架构和DDD领域驱动设计构建货物运输系统