DirectX 12 is a widely-used graphics API developed by Microsoft for Windows operating systems. It provides game developers with tools to create stunning visual effects and realistic graphics in their
原创 2024-04-16 09:59:53
167阅读
DirectX12里面包含了很多难以理解的概念,这篇文章力求把这些概念都讲解清楚,对于概念的学习可能会比较枯燥,所以希望大家能够坚持下去,加油!!!(暂时不能理解的可以先放一放,以后慢慢的就能理解了)1、图形管道概述图形管道是在图形硬件上运行的一系列过程,被分为许多阶段。 我们将数据推送到流水线中,通过这些阶段处理数据以获得代表3D场景的最终2D图像。 我们还能够使用图形管道从“Stream Output”阶段中流出处理过的几何图形。一些阶段 可以配置(固定功能),而还有一些阶段可以编程(可编程).
原创 2021-06-17 11:34:07
2296阅读
当我们需要绘制大量同一种几何物体时,可以使用instancing,一次将所需要的绘制信息全部传输给GPU,使其可以批量绘制同一种几何物体,提高绘制的效率。要使用instancing,首先要对shader代码进行调整: struct InstanceData { float4x4 world; flo ...
转载 2021-10-17 16:46:00
91阅读
2评论
DirectX12初始化综合篇包含了四篇文章(​​Direct3D 12简介​​,​​图形管道概述​​,​​Direct3D 12工作原理概述​​,​​Direct3D 12的应用程序流控制概述​​)。DirectX12里面包含了很多难以理解的概念,这篇文章力求把这些概念都讲解清楚,对于概念的学习可能会比较枯燥,所以希望大家能够坚持下去,加油!!!(暂时不能理解的可以先放一放,以后慢慢的就能理解了
原创 2022-02-07 15:41:47
1003阅读
dynamic indexing是shader model 5.1才支持的功能,目的是在CPU层减少有关material const buffer和texture descriptor的切换,提高绘制效率。要使用dynamic indexing,首先要对shader代码进行调整: struct Ma ...
转载 2021-09-27 00:06:00
113阅读
2评论
stencil buffer通常在实现一些特殊的效果时使用的,这里我们以实现一个object的shadow为例,来看看具体怎么使用它。首先需要创建一个和要实现shadow的object一样的object,作为shadow object。然后对其应用shadow matrix变换: XMMATRIX world = XMLoadFloat4x4(&object->mWorldMatri
转载 2021-03-17 22:59:38
321阅读
2评论
初始化过程初始化DirectX 3D的过程可以分为9步。1.创建ID3D12Device2.创建ID3D12Fence并查找descriptor的大小3.查询4X MSAA支持的的quality level4.创建一个command queue、command list allocator和主要的command list5.创建swap chain6.创建描述符堆7.指定bac...
转载 2022-03-20 14:37:29
214阅读
初始化过程初始化DirectX 3D的过程可以分为9步。1.创建ID3D12Device2.创建ID3D12Fence并查找descriptor的大小3.查询4X MSAA支持的的quality level4.创建一个command queue、command list allocator和主要的command list5.创建swap chain6.创建描述符堆7.指定bac...
转载 2021-06-17 12:11:48
912阅读
什么是DirectX?Microsoft DirectX是一套图形API,可以用来创建游戏和高性能的图形应用。DirectX支持2D和3D图形。 什么是Direct3D 12?Direct3D是DirectX中关于3D图形部分的API,12是版本号,12之前还有11,10,9等等。文档描述Direct3D 12比以往的任何一个版本都要更快、更有效率。“Direct3D 12 is fas
转载 1月前
382阅读
刚开始我想通过常量缓存上传几个数据到着色器使用,却出现了数据错误,结果调试发现是ByteWidth 的问题。我的刚开始的常量缓存结构体为: struct SceneConstantBuffer { XMFLOAT4X4 mvp; // Model-view-projection (MVP) matrix. XMFLOAT3 lightPos; XMFLOAT3 viewPos; XMFLOAT3 color; };着色器代码对应为:cbuf.
原创 2021-06-17 11:33:59
157阅读
刚开始我想通过常量缓存上传几个数据到着色器使用,却出现了数据错误,结果调试发现是ByteWidth 的问题。我的刚开始的常量缓存结构体为: struct
原创 2022-02-07 15:39:42
109阅读
这里展示的案例是,首先通过从虚幻引擎里面导出场景二进制数据,然后通过DirectX12读取数据进行渲染得到的结果。虚幻原来场景如下通过DirectX12渲染出来以后的场景如下
原创 2021-06-17 11:34:14
799阅读
这里展示的案例是,首先通过从虚幻引擎里面导出场景二进制数据,然后通过DirectX12读取数据进行渲染得到的结果。虚幻原来场景如下通过DirectX12渲染出来以后的场景如下
原创 2022-02-11 10:19:16
218阅读
Create D3D12 Device CD3DX12_CPU_DESCRIPTOR_HANDLE rtvHandle(m_rtvHeap->GetCPUDescriptorHandleForHeapStart()); // Create a RTV for each frame. for (UINT n = 0; n GetBuffer(n, IID_P...
原创 2019-06-03 21:54:00
229阅读
文章详细讲解了DirectX12的版本兼容、驱动更新、命令行修复方法以及“一键修复工具”使用教程,是2025年最全面的DirectX12修复指南之一。适用于所有Win10/Win11系统用户,帮助你快速恢复游戏与显卡的最佳性能。 ...
在本教程中,我们将学习如何在DirectX 12中绘制一些位图文本。我们还将学习如何使用高精度计时器来获取每秒的帧数,以及使游戏逻辑的时序保持一致,而
原创 2022-02-07 15:40:14
1694阅读
在本教程中,我们将学习如何在DirectX 12中绘制一些位图文本。我们还将学习如何使用高精度计时器来获取每秒的帧数,以及使游戏逻辑的时序保持一致,而不是像前面的教程中那样基于计算机的运行速度。介绍在本教程中,我们将学习如何使用位图字体在DirectX 12中绘制文本。 为了显示文本,我们将使用QueryPerformanceTimer API每秒显示帧数。 我们将学习如何使用名为Hiero的工具创建位图字体,该工具还会输出一个fnt文件,我们可以阅读该文件来了解如何渲染字体中的每个字符,例如放置.
原创 2021-06-17 11:33:56
559阅读
DirectX 12支持tessellation,我们可以在vertex shader后加入hull shader和domain shader,来对顶点进行动态细分,以实现不同的效果。在CPU层面上,我们传入的顶点信息需要设置为patchlist,DirectX 12最多支持32个控制点的patch ...
转载 2021-08-29 19:07:00
180阅读
2评论
几何着色器可以允许我们在GPU中增加,删除,修改传入的顶点属性。一个常见的用途是billboard,视野远处的物体直接用一个永远面向摄像机的面片来代替,并且这个面片实际上可以由1个点通过几何着色器输出4个顶点来生成。 首先,我们需要定义新的顶点类型,和相应的input layout: struct ...
转载 2021-05-14 00:29:00
259阅读
2评论
compute shader是用来把一些适合在gpu上运算的任务从cpu挪到gpu去做。例如一些后处理的效果,对纹理上的每个像素分别进行各自运算,最后得到结果。我们以实现sobel边缘检测算法为例,首先把正常绘制的内容渲染到一张off screen的render target上;然后使用这张rend ...
转载 2021-06-23 00:43:00
568阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5