D3D11 基础学习
目前市面上关于D3D11的中文书籍很少,大部分都是英文书籍。但是英文书籍对有些朋友看起来还是比较费劲,因此我准备把MSDN 关于D3D11的教程翻译成中文,希望能对大家学习D3D11有所帮助。
萧戈
从事视频方向的开发
展开
-
如何:创建一个常量缓冲区(十八)
常量缓冲区包含着色器常量数据.本节描述如何在准备渲染时初始化常量缓冲区。初始化常量缓冲区定义描述常量数据的结构。 通过填充D3D11_BUFFER_DESC结构创建缓冲区描述,将D3D11_BIND_CONSTANT_BUFFER标志传递给BindFlags成员,并将常量缓冲区描述结构的大小(以字节为单位)传递给ByteWidth成员。注意,D3D11_BIND_CONSTANT_BUF...原创 2019-04-28 14:52:54 · 593 阅读 · 0 评论 -
如何:创建顶点缓冲区(十七)
顶点缓冲区包含每个顶点数据,本节描述如何初始化静态顶点缓冲区,也就是说,顶点缓冲区不会改变。有关初始化非静态缓冲区的帮助,请参阅备注部分。初始化静态顶点缓冲区定义描述顶点的结构。例如,如果顶点数据包含位置数据和颜色数据,那么结构中就会有一个描述位置的向量和另一个描述颜色的向量。 为第一步中定义的结构分配内存(使用malloc或new),用描述几何图形的实际顶点数据填充这个缓冲区。 通过...原创 2019-04-28 14:44:23 · 534 阅读 · 0 评论 -
介绍Direct3D 11中的缓冲区(十六)
缓冲区资源是一组按元素分组的全类型数据的集合。你可以使用缓冲区来存储各种各样的数据,包括位置信息,法向量,纹理坐标、索引信息、设备状态。一个元素由1到4个组件组成。缓冲区元素包含打包数据值(R8G8B8A8),单个8位整数,或4个32位浮点值。缓冲区作为非结构化资源创建,缓冲区不能包含任何mipmap级别,它在读取时不能被过滤,也不能被多采样。缓冲区类型下面是D3D11缓冲区资源类型,...原创 2019-04-28 14:15:31 · 707 阅读 · 0 评论 -
子资源(十五)
Direct3D可以引用整个资源,也可以引用资源的子集。术语子资源指的是资源的子集。缓冲区定义为单个子资源。纹理有点复杂,因为有几种不同的纹理类型(1D、2D等),其中一些支持mipmap级别和/或纹理数组。从最简单的情况开始,一维纹理被定义为单个子资源,如下图所示。这意味着组成一维纹理的纹素数组包含在单个子资源中。如果您使用三个mipmap级别展开一维纹理,可以将其可视化,如下图...原创 2019-04-26 13:57:36 · 390 阅读 · 0 评论 -
资源类型(十四)
资源是可以通过Direct3D管道访问的内存区域。他们是场景的组成块。资源保护几种数据类型:几何体、纹理、和着色器数据。D3D11和D3D10资源的不同:下面是D3D11支持的新数据类型:读写缓冲区和纹理 结构体缓冲区 字节地址缓冲区 追加和消费缓冲区 无序访问缓冲区和纹理...原创 2019-04-26 11:03:05 · 437 阅读 · 0 评论 -
介绍Direct3D 11中的资源(十三)
资源是场景的组成块。它们包含了Direct3D用来解释和渲染场景的大部分数据。资源是可以通过Direct3D管道访问的内存区域(这里指显存)。资源包含以下类型的数据:几何、纹理、着色器数据。你能创建强类型或者弱类型的资源;你能控制资源是否能同时读和写。你能控制资源是否访问CPU、GPU、或者两个同时访问。每个管道最多能激活128个资源。Direct3D资源的生命周期为:使用ID3D...原创 2019-04-26 10:34:10 · 425 阅读 · 0 评论 -
如何:获得设备功能级别(十二)
Direct3D 11设备支持D3D_FEATURE_LEVEL枚举中定义的一组固定的功能级别。一旦知道设备支持的最高特性级别,就可以运行适合该设备的代码路径。获取设备功能级别在创建设备之前,能通过调用D3D11CreateDevice或者D3D11CreateDeviceAndSwapChain函数并制定ppDevice为NULL获取设备支持的功能集。或者调用 ID3D11Devic...原创 2019-04-25 19:07:07 · 1395 阅读 · 0 评论 -
介绍如何在11、10或9个硬件上运行Direct3D 11应用程序(十一)
征层为了处理新机器和现有机器中视频卡的多样性,Direct3D 11引入了特征级别的概念。每个显卡根据所安装的gpu实现一定级别的Direct3D功能。在以前的Direct3D版本中,您可以找到所实现的视频卡的Direct3D版本,然后相应地编写应用程序。使用Direct3D 11,引入了一个新的范例,称为特征层。一个特征层是一组定义好功能集。例如,9_1功能级别实现了在Direct3D ve...原创 2019-04-25 18:02:49 · 856 阅读 · 0 评论 -
Direct3D 11 的底层硬件(十)
Direct3D 11既支持新硬件也支持旧硬件,从DirectX 9到DirectX 11,如下图所示:使用Direct3D 11,引入了一个新的范例,称为特征层。一个特征层定义了GPU的功能集。使用特性级别,您可以将Direct3D应用程序作为目标,使其运行在Direct3D硬件的低层版本上。...原创 2019-04-24 18:07:46 · 282 阅读 · 0 评论 -
如何:创建设备和实时上下文(九)
初始化设备是应用程序在渲染场景之前必须完成的首要任务之一。创建设备和实时上下文填充DXGI_SWAP_CHAIN_DESC结构体的缓冲区数据格式和大小信息。想要知道更多的信息,参考如何:创建交换链。下面的代码演示怎么去填充DXGI_SWAP_CHAIN_DESC结构体。 DXGI_SWAP_CHAIN_DESC sd;ZeroMemory( &sd, sizeof( sd ...原创 2019-04-24 17:55:44 · 222 阅读 · 0 评论 -
如何:获得适配器显示模式(八)
DirectX 10和11使用DirectX图形基础设施(DXGI)来获得与适配器关联的有效显示模式。了解有效的显示模式可以确保应用程序能够正确地选择有效的全屏模式。如何获得适配器显示模式创建IDXGIFactory对象并使用它枚举可用适配器。有关更多信息,请参见如何:枚举适配器。 调用IDXGIAdapter:: EnumOutputs枚举每个适配器的输出。 IDXGIOutpu...原创 2019-04-24 17:34:16 · 922 阅读 · 0 评论 -
如何:枚举适配器(七)
DirectX 10和11使用DirectX图形基础设施(DXGI)枚举计算机上可用的图形适配器。您通常需要枚举适配器,原因如下:确定计算机上安装了多少图形适配器 帮助您选择要使用哪个适配器来创建Direct3D设备 要检索可用于检索设备功能的IDXGIAdapter对象枚举适配器通过调用CreateDXGIFactory函数创建IDXGIFactory对象。下面的代码示例演示如何初...原创 2019-04-24 17:24:49 · 856 阅读 · 0 评论 -
如何:创建交换链(六)
交换链封装2个以上的后背缓冲区用于渲染和显示。他们通常包含一个前置缓冲区用于显示和一个后背缓冲区用于渲染。实时上下文用于渲染后背缓冲区,交换链通过交换两个缓冲区来显示图像。交换链定义了几个渲染特性,包括:渲染区域的大小 显示刷新率 显示模式 缓冲区的数据格式通过填充DXGI_SWAPCHAIN_DESC结构并初始化IDXGISwapChain接口,定义交换链的特征。通过调用IDXG...原创 2019-04-24 17:16:50 · 1131 阅读 · 0 评论 -
如何:创建引用设备(五)
引用设备实现运行时的高度精确的软件实现。要创建引用设备,只需指定正在创建的设备将使用引用驱动程序。这个例子同时创建了一个设备和一个交换链。创建引用设备定义并初始化交换链变量。 DXGI_SWAP_CHAIN_DESC sd; ZeroMemory( &sd, sizeof( sd ) ); sd.BufferCount = 1; sd.Buffe...原创 2019-04-24 17:01:25 · 177 阅读 · 0 评论 -
软件层(四)
Direct3D 11运行时由层构建,从核心的基本功能开始,在外层构建可选的和开发人员辅助的功能。本节描述每个层的功能。一般来说,添加层能添加功能,但不修改现有的行为。例如,核心函数将返回相同的返回值,无论是否实例化调试层。调试层可以提供额外的输出。要在创建设备时创建层,请调用D3D11CreateDevice或D3D11CreateDeviceAndSwapChain,并提供一个或多个D3D...原创 2019-04-24 16:41:16 · 389 阅读 · 0 评论 -
介绍Direct3D 11中的一个设备(三)
Direct3D 11对象模型将资源创建和渲染功能分离到一个设备和一个或多个设备上下文中。这种分离旨在促进多线程。设备 设备上下文 实时设备上下文 延迟设备上下文 线程问题设备设备用于创建资源并枚举显示适配器的功能。在Direct3D 11中,设备用ID3D11Device接口表示。每个应用程序必须至少有一个设备,大多数应用程序只创建一个设备。通过调用D3D11Create...原创 2019-04-24 16:02:07 · 820 阅读 · 0 评论 -
Direct3D 11 特性(一)
编程指南包含如何使用Direct3D 11可编程管道科学地为游戏和桌面应用程序创建实时3D图形的信息。计算着色器 动态渲染链接 多线程 曲面细分 功能的完整列表计算着色器计算着色器允许在GPU上面并行处理,计算着色器是为通用数据并行处理操作而设计的可编程着色器。它在处理输入输出的方式上和其他可编程着色器(顶点、像素、几何体)相似。计算着色器集成到Direct3D中,可以通过Dir...原创 2019-04-23 16:37:56 · 1631 阅读 · 0 评论