D3D的两个主要的接口

  • Device,ID3D11Device。创建资源,Shader对象,状态对象,查询对象,等。以及检查硬件功能,调试函数。可以认为是资源的提供者。
  • Device Context,ID3D11DeviceContext。使用资源。绑定资源,Shader对象,状态对象等到流水线。以及控制计算流水器的执行。
    • Immedite context。立即模式,用于主渲染线程,也是服务GPU的主要接口
    • Deffered context。延迟模式,提供线程安全机制,用于异步线程模型。

创建Device和Context:

创建Device可以用 D3D11CreateDevice函数 或 D3D11CreateDeviceAndSwapChain函数。区别是后者还可以创建swap chain和返回context,所以优先用后者。

D3D11CreateDeviceAndSwapChain的参数用法如下:
HRESULT  D3D11CreateDeviceAndSwapChain(
__in IDXGIAdapter *pAdapter,
__in D3D_DRIVER_TYPE DriverType,
__in HMODULE Software,
__in UINT Flags,
__in const D3D_FEATURE_LEVEL *pFeatureLevels,
__in UINT FeatureLevels,
__in UINT SDKVersion,
__in const DXGI_SWAP_CHAIN_DESC *pSwapChainDesc,
__out IDXGISwapChain **ppSwapChain,
__out ID3D11Device **ppDevice,
__out D3D_FEATURE_LEVEL *pFeatureLevel,
__out ID3D11DeviceContext **ppImmediateContext
;

*pAdapter: 指向显卡适配器,NULL则使用默认的显卡。


DriverType:指定驱动类型。值可以是:
  • D3D_DRIVER_TYPE_UNKNOWN,
  • D3D_DRIVER_TYPE_HARDWARE,一般用这个
  • D3D_DRIVER_TYPE_REFERNCE,用于软件实现的D3D
  • D3D_DRIVER_TYPE_NULL,用于测试
  • D3D_DRIVER_TYPE_SOFTWARE,自定义驱动,通常不用。
  • D3D_DRIVER_TYPE_WARP,支持使用多核CPU,但只能用于D3D 10.1。
software:如果DriverType选的不是software,这个参数就设置成NULL。


Flags:指定设备的特殊功能,可以是以下值的组合:
enum D3D11_CREATE_DEVICE_FLAG
    {
        D3D11_CREATE_DEVICE_SINGLETHREADED= 0x1, //必须是单线程的。如果不设置就是多线程的。
        D3D11_CREATE_DEVICE_DEBUG= 0x2,  //实现ID3D11Debug接口。
        D3D11_CREATE_DEVICE_SWITCH_TO_REF= 0x4,  //D3D11不支持此选项。
        D3D11_CREATE_DEVICE_PREVENT_INTERNAL_THREADING_OPTIMIZATIONS= 0x8, //禁止多线程优化。
        D3D11_CREATE_DEVICE_BGRA_SUPPORT= 0x20,  //用于Direct2D
        D3D11_CREATE_DEVICE_DEBUGGABLE= 0x40,
        D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY= 0x80,
        D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT = 0x100,
        D3D11_CREATE_DEVICE_VIDEO_SUPPORT= 0x800
    } D3D11_CREATE_DEVICE_FLAG;

pFeatureLevels,指定要支持的D3D的功能级别。可以是以下值的组合:
  • D3D_FEATURE_LEVEL_11_1,
  • D3D_FEATURE_LEVEL_11_0,
  • D3D_FEATURE_LEVEL_10_1,
  • D3D_FEATURE_LEVEL_10_0,
  • D3D_FEATURE_LEVEL_9_3,
  • D3D_FEATURE_LEVEL_9_2,
  • D3D_FEATURE_LEVEL_9_1
SDKVersion,在D3D11中就使用 D3D11_SDK_VERSION


pSwapChainDesc,swap chain是DXGI创建的对象。此指针指向swap chain的描述,主要是swap chain的初始化属性。需要定义一个DXGI_SWAP_CHAIN_DESC结构体。


ppSwapChain,返回SwapChain。

ppDevice,返回Device。

pFeatureLevel,返回FeatureLevel。

ppImmediteContext,返回ImmediteContext。

Direct3D 11的Device接口和DeviceContext接口的更多相关文章

  1. JQuery1.11版本对prop和attr接口的含义分离导致问题分析

    问题背景 实验中, 在jquery1.7版本, attr("value")  和 val() 接口获取 input 控件的值, 都是一致的, 都是当前控件值. 但是 jquery1 ...

  2. 【译】Import Changes from Direct3D 11 to Direct3D 12

    译者:林公子 出处:木木的二进制人生 转载请注明作者和出处,谢谢! 这是微软公布的Direct3D 12文档的其中一篇,此翻译留作学习记录备忘,水平有限,错漏难免,还望海涵. 原文链接是https:/ ...

  3. Java对象克隆(Clone)及Cloneable接口、Serializable接口的深入探讨

    Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么 ...

  4. Java6.0中Comparable接口与Comparator接口详解

    Java6.0中Comparable接口与Comparator接口详解 说到现在,读者应该对Comparable接口有了大概的了解,但是为什么又要有一个Comparator接口呢?难道Java的开发者 ...

  5. Servlet--HttpSession接口,HttpSessionContext接口,Cookie类

    HttpSession接口 定义 public interface HttpSession 这个接口被 Servlet 引擎用来实现在 HTTP 客户端和 HTTP 会话两者的关联.这种关联可能在多外 ...

  6. Direct3D 11 Tutorial 1: Basics_Direct3D 11 教程1:基础

    Github-LearnDirectX-DX3D11 tutorial01 概述 在这第一篇教程中,我们将通过介绍创建最小Direct3D应用程序所必需的元素.每一个Direct3D应用程序必需拥有这 ...

  7. Spring InitializingBean 接口以及Aware接口实现的原理

    关于Spring InitializingBean 接口以及Aware接口实现的其实都在 第11步中: finishBeanFactoryInitialization() 方法中完成了3部分的内容: ...

  8. 部分还款-还款试算接口与还款接口-python

    一.还款试算.还款接口, 1.只传入参数loan_Code 2.还款接口参数化以下: "loanCode": loanCode1,"orderId": orde ...

  9. Java8函数式接口/Lambda表达式/接口默认方法/接口静态方法/接口冲突方法重写/lambda表达式指定泛型类型等

    一:函数式接口 1.函数式接口的概念就是此接口必须有且只能有一个抽象方法,可以通过@FunctionalInterface来显示规定(类似@Override),但是没有此注解的但是只有一个抽象方法的接 ...

随机推荐

  1. [置顶] Android安全机制分析

    Android系统是基于Linux内核开发的,因此,Android系统不仅保留和继承了Linux操作系统的安全机制,而且其系统架构的各个层次都有独特的安全特性[2] . 1. Linux内核层安全机制 ...

  2. php缓存方案

    一.说说Memcached优化方案 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据 ...

  3. Android ActionBar完全解析,使用官方推荐的最佳导航栏(下) .

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/25466665 本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工 ...

  4. openstack中glance组件images的全部python API 汇总

    感谢朋友支持本博客,欢迎共同探讨交流.因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  5. Mysql User表为空

    Mysql5.6刚安装完成,未设置过密码,root账号登录提示:root@localhost mysql]# mysqlERROR 1045 (28000): Access denied for us ...

  6. c#编程:输入、输出

    c#编程 main函数 static void Main(string[] args)        {        } 程序需写在main函数的花括号内 一.输出:Console.WriteLin ...

  7. C#基础之方法参数

    params params 关键字可以指定在参数数目可变处采用参数的方法参数. 在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字 publi ...

  8. SQL 分组获取最近(大)一条记录

    SELECT MAX( table.Column),.... FROM table.Name WHERE ....... GROUP BY 分组规则

  9. Silverlight visifire Chart图表下载到PPT文件中

    一.Silverlight xaml.cs文件 1. //下载图表        private void btnDown_Click(object sender, RoutedEventArgs e ...

  10. ashx ajax 与 自定义javascript函数

    1.getUserPower为自定义javascript函数 获取权限  (1).ashx 处理程序的相对地址(必须是相对地址)  (2).au 权限名称  (3).classname 类名  (4) ...