Direct3D 12简介DirectX 12是Microsoft最新的DirectX API版本。 Direct3D随DirectX 12一起提供,Direct3D 12是DirectX API集合中的图形API(其他API包括DirectSound,DirectInput,DirectDraw等)。
Direct3D 12的性能比Direct3D的任何以前的迭代要好得多。 Direct3D提供了对图形硬件的较低级别控制,从而可以更有效地使用线程。我们能够使用多个线程来填充命令列表。拥有更多控制权的另一方面意味着我们现在要承担更多责任,例如CPU / GPU同步和内存管理。
Direct3D还通过使用预编译的管道状态对象和命令列表(bundles)来最大程度地减少CPU开销。在应用程序的初始化阶段,我们将创建许多管线状态对象,这些对象由着色器(顶点,像素等)和其他管线状态(混合,光栅化器,基本拓扑等)组成。然后,在运行时,驱动程序不必像在Direct3D 11中那样更改管道的状态,就可以创建管道状态。相反,我们提供了一个管道状态对象,当我们调用draw时,它将使用管道,而且我们没有动态创建管道状态的开销。我们还可以在初始化期间创建一组命令,这些命令可以反复使用称为Bundles的命令。
关于Direct3D的另一件很酷的事情是,它的API调用少得多,根据MSDN,它的调用数约为200(而其中大约三分之一完成了所有艰苦的工作)。
我们将在本教程中学习以下内容:
图形管道概述
- The Compute Shader
- Input Assembler (IA) Stage
- Vertex Shader (VS) Stage
- Hull Shader (HS) Stage
- Tessellator (TS) Stage
- Domain Shader (DS) Stage
- Geometry Shader (GS) Stage
- Stream Output (SO) Stage
- Rasterizer Stage (RS)
- Pixel Shader (PS) Stage
- Output Merger (OM) Stage
Direct3D 12工作原理概述
- The Device
- Pipeline State Objects
- Command Lists - Bundles
- Command Queues
- Command Allocators
- Resources
- Descriptors (Resource Views)
- Descriptor Tables
- Descriptor Heaps
- Root Signatures
- Resource Barriers
- Fences and Fence Events
- Overview of Application Flow Control for Direct3D 12
- Multithreading in Direct3D 12
初始化Direct3D 12
- Creating a device
- Creating a command queue
- Creating a swap chain
- Creating a descriptor heap
- Creating a command allocator
- Creating a root signature
- Compiling and Creating shader bytecode
- Creating a pipeline state object
- Creating a command list
- Creating a fence and fence event
参考链接:
- https://docs.microsoft.com/en-us/windows/win32/direct3d12/directx-12-programming-guide
- http://www.d3dcoder.net/
- https://www.braynzarsoft.net/viewtutorial/q16390-04-directx-12-braynzar-soft-tutorials
- https://developer.nvidia.com/dx12-dos-and-donts
- https://www.3dgep.com/learning-directx-12-1/
- https://gpuopen.com/learn/lets-learn-directx12/
- https://alain.xyz/blog/raw-directx12
- https://www.rastertek.com/tutdx12.html
- https://digitalerr0r.net/2015/08/19/quickstart-directx-12-programming/
- https://walbourn.github.io/getting-started-with-direct3d-12/
- https://docs.aws.amazon.com/lumberyard/latest/userguide/graphics-rendering-directx.html
- http://diligentgraphics.com/diligent-engine/samples/
- https://www.programmersought.com/article/2904113865/
- https://www.tutorialspoint.com/directx/directx_first_hlsl.htm
- http://rbwhitaker.wikidot.com/hlsl-tutorials
- https://digitalerr0r.net/2015/08/19/quickstart-directx-12-programming/
- https://www.ronja-tutorials.com/post/002-hlsl/
Direct3D 12简介
原创
©著作权归作者所有:来自51CTO博客作者嘿克不黑的原创作品,请联系作者获取转载授权,否则将追究法律责任
下一篇:DirectX12初始化综合篇

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Direct3D Frustum裁剪原理
本文原创版权归 百度 laizhishen 所有,如有转载,请按如下方式显式标明3d206d209cca9c54ac34de4
direct3d float c 优化 面试 -
Direct3D 12基础关系逻辑图
Direct3D 12基础关系逻辑图
Direct 编程开发 -
Direct3D顶点结构使用总结
D3D里面最基本的就是顶点了,虽说一直在用,可是却也是自己比较用LPDIRECT3DVERTEXBUFFER9 来声明顶点缓冲区,它其实就是IDirect3DVe
direct3d float matrix struct blend -
direct3d
DirectX for .Net procedure 1, install DXSDK https://www.microsoft.com/en-us/download/details.aspx?id=6812 2, goto MS tutorial https://msdn.microsoft.c
microsoft .net desktop v9 前端 数据 数据库 编程语言 -
Direct3D 使用质地
关于使用质地1 创建纹理2 纹理寻址模式3 纹理过滤1 创建纹理 D3DXCreat
d3 寻址 寻址方式 3d 多级