
DirectX12(D3D12)
文章平均质量分 91
GamebabyRockSun_QQ
曾经拥有的,不要忘记,
已经得到的,更要珍惜,
属于自己的,不要放弃,
已经失去的,留着回忆,
想要得到的,必须努力,
但最重要的,是好好爱惜自己!
展开
-
DirectX12(D3D12)基础教程(二十三) ——DirectShaderCompiler 头文件接口 ID3DInclude 的应用
本章教程较短小,但内容十分重要,是后续更灵活使用 Shader 编程的重要基础之一。也就是对 Shader 代码进行头文件分离复用设计进行全面支持。或者直白的说,本章内容重点就是让各位掌握以编程的方式在代码中支持 Shader 头文件的方法,方便在设计 Shader 编辑器之类工具时,可以让所有的 Shader 组织的更有层次。本章实例代码依然基于示例是从Direct3D 10及更高版本中引入的回调接口,它用于处理着色器编译过程中的文件包含操作,即 “#include” 宏命令。原创 2024-04-24 09:37:14 · 1998 阅读 · 14 评论 -
DirectX12(D3D12)基础教程(二十二) ——HDR IBL 等距柱面环境光源加载和解算及 GS 一次性渲染到 CubeMap
在上一讲DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理中,着重介绍了整个基于 IBL 光源的 PBR 渲染过程中的数学原理,核心还是围绕反射方程(渲染方程)的简化高效计算过程展开的。当然其中数学过程稍微有些复杂。这一讲主要介绍 IBL 中等距柱面贴图解算的全过程。原创 2023-07-19 18:59:43 · 3088 阅读 · 9 评论 -
DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(5/5)镜面反射积分项2及光照合成
至此总算在历时将近一个月之后,我将这篇教程全部编写整理完毕了,期间翻阅了很多资料,查证了很多公式,通过推演梳理整个IBL渲染过程中的数学原理,终于将整个 IBL过程搞清楚也能讲清楚了。其实 PBR 中的有些理论最早都可以追溯到上个世纪的60年代,整个过程中有很多知名的不知名的大咖们奉献了很多方法和理论,而实时 PBR 更是迟到 2012 年因迪士尼的几篇论文而兴起,再经过 Epic 中众多大佬的打磨提炼,直至今天,实时 PBR 的应用才是方兴未艾之时。原创 2023-03-20 20:07:22 · 1930 阅读 · 13 评论 -
DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(4/5)镜面反射积分项1
接着我们观察整个积分方程拆分后的第二项,也就是被称之为镜面反射项的部分:Los(p⃗,ωo⃗)=∫Ω(DFG4(ωo⃗⋅n⃗)(ωi⃗⋅n⃗))Li(p⃗,ωi⃗)n⃗⋅ωi⃗dωi⃗D=NDFGGXTR(n⃗,h⃗,α)=α2π((n⃗⋅h⃗)2(α2−1)+1)2F=FSchlick(h⃗,ωo⃗,F0)=F0+(1−F0)(1−(h⃗⋅ωo⃗))5GSchlickGGX(n⃗,ωo⃗,κ)=n⃗⋅ωo⃗(n⃗⋅ωo⃗)(1−κ)+κκdirect=(α+1)28κIBL=α22G(n⃗,ωo⃗,原创 2023-03-20 20:03:39 · 1184 阅读 · 5 评论 -
DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(3/5)漫反射积分项
额外需要提醒的是在著名的 [漫反射辐照 - LearnOpenGL CN](https://learnopengl-cn.github.io/07 PBR/03 IBL/01 Diffuse irradiance/) 教程中,既没有详细讲述整个数学过程,也没有推导重要性采样的过程,最后其漫反射辐照度贴图使用了计算量更大的双重循环来计算,如果不加思索的直接使用其代码,可能会造成显卡过热保护而退出,严重的情形下可能会造成显卡硬伤,所以在没有搞清楚的情况下请不要随意执行。更高级的可以使用球谐函数的方式简化存储。原创 2023-03-20 19:51:08 · 1335 阅读 · 5 评论 -
DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(2/5)
如果你有一点关于积分运算的知识的话,那么明显的就可以发现渲染方程可以进一步拆分为两个部分,这样反射积分就变成了两个部分积分的和。这样显然是有好处的,因为这种形式两个积分项可以分开计算,最后再来求和,所以可以被方便的用来并行计算。原创 2023-03-20 19:34:44 · 1101 阅读 · 4 评论 -
DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(1/5)
2023年来了,令人闹心伤身的疫情也暂告一段落了。感慨之余,其实我也挺惆怅,这个系列教程还能继续下去吗?或者我自己还能坚持多久,我不知道。因为我也天天徘徊在失业的边缘,年纪大了被人嫌弃,学历低被人嫌弃,身体稍差也被人嫌弃,忽然发现我已不是当初那个少年了,却还始终怀揣着少年时的梦想,依旧挣扎在理想与现实之间,或者只是挣扎在温饱线上,已然是一身债,半条命了。当然幸运的是到现在我都还没有阳过,属于少数那部分,我身边的朋友们也很惊奇。然而我的家人也都阳过了,他们也很惊奇我居然一直没有阳过,算是一点小小的慰藉吧。原创 2023-03-20 19:16:01 · 2193 阅读 · 9 评论 -
3D数学系列之——再谈蒙特卡洛积分和重要性采样
保证一定的精度,其实就是之前标题所说的从 “蒙的挺准” 到 “蒙的更准”,而且计算量还大大变小了,这对于很多需要数值积分的计算来说是非常非常好的优化方法。成正比导致我们必须付出平方倍的计算量,才能使的误差变小的规律可以被打破了,因为这个因子的后面那堆复杂的表达式在我们特意的设计下几乎 = 0,所以我们完全不用浪费过多的计算量来获取较精确的积分结果。乍看上去,貌似我们要知道我们需要使用的随机变量的概率密度,就需要先知道最终积分的结果,使得这个式子变成了无用的“鸡肋”。也就越接近原始的积分值!原创 2023-03-10 18:45:50 · 2819 阅读 · 6 评论 -
DirectX12(D3D12)基础教程(二十)—— 纹理数组(Texture Array)非DDS初始化操作
在本系列教程的DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map中,第一次介绍并引入了基于 DDS 格式的CubeMap的操作和使用方法。在后续示例代码的编写过程中,逐渐发现 DDS CubeMap 的种种局限,主要是 DDS 的 CubeMap 其实很难找,并且使用它来加载 SkyBox ,会因为其相关代码的过渡封装而导致对 Texture 或 Texture Array 本身的各种操作和理解基本上是很困难的。原创 2022-10-24 01:45:00 · 2562 阅读 · 18 评论 -
DirectX12(D3D12)基础教程(十九)—— 多实例渲染
多实例渲染,本质上就是说将同一份模型(Mesh),按不同参数渲染成多份,每一份被称作一个实例,并且大多数情况下要求每个实例都要有差异。在游戏中常见这类使用场景,例如在即时战略游戏中,同一种飞机可能需要渲染几百个,它们在外观上几乎没什么差异,或者差异很少,主要是位置不同,运动状态不同,颜色不同等;在休闲游戏中,这可能是一组相同的方块,差异可能只是位置和颜色不同,或者是纹理不同等;原创 2022-10-09 22:52:50 · 3283 阅读 · 8 评论 -
DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(下)
基于D3D12的PBR渲染基础教程第三部分原创 2022-05-27 10:39:45 · 2785 阅读 · 12 评论 -
DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(中)
基于D3D12的PBR基础教程原创 2022-05-27 10:09:33 · 1987 阅读 · 3 评论 -
DirectX12(D3D12)基础教程(十八)—— PBR基础从物理到艺术(上)
基于D3D12的PBR基础教程第一部分原创 2022-05-27 09:35:42 · 1835 阅读 · 0 评论 -
2021-09-16 D3D12中各种边界对齐常量定义
#define D3D12_STANDARD_MAXIMUM_ELEMENT_ALIGNMENT_BYTE_MULTIPLE ( 4 )#define D3D12_TEXTURE_DATA_PITCH_ALIGNMENT ( 256 )#define D3D12_TEXTURE_DATA_PLACEMENT_ALIGNMENT ( 512 )#define D3D12_UAV_COUNTER_PLACEMENT_ALIGNMENT ( 4096 )#define D3D12_VIDEO_DE原创 2021-09-16 17:24:40 · 541 阅读 · 3 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【6】)
目录12、多Slot上传顶点数据12.1、多Slot上传数据基本原理12.2、Assimp中间数据的简单转换12.2、Layout的定义12.3、缓冲区准备12.4、多Slot渲染13、动画动作状态机14、后记12、多Slot上传顶点数据 在网格数据加载及上传至GPU上,本章示例应用到了一个重要的D3D12技巧——多Slot(通道)上传(加载)数据(该技巧在OpenGL中同样重要)。12.1、多Slot上传数据基本原理 首先,多Slot上传数据,是基于一些基础条件的: 1、原始网格数据是按照原创 2021-07-18 12:33:50 · 2178 阅读 · 65 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【5】)
目录10、动画关键帧解算10.1、时间轴10.2、遍历动作CalcAnimation10.2、递归遍历骨骼树ReadNodeHeirarchy10.3、关键帧数据解算和插值10.4、生成关键帧骨骼变换矩阵10.5、关于性能的一些考虑11、骨骼调色板10、动画关键帧解算 在本章示例中,对导入后的模型动画数据,主要通过两个函数:CalcAnimation和递归函数ReadNodeHeirarchy,以及其它辅助工具函数来完成。10.1、时间轴 对于动画、音乐、视频等,甚至游戏引擎来说,正确的时间轴是原创 2021-07-18 12:27:52 · 1348 阅读 · 13 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【4】)
目录8、动画基本原理9、四元数和SQT组合变换9.1、四元数9.2、SQT变换综合9.3、存储方面的考虑8、动画基本原理 对于一般的2D动画,甚至视频来说,相信各位已经很了解其原理了,无非就是在1秒钟之内能够连续播放不少于24帧的连续画面,也被称之为帧速率(FPS),就可以在人类脑海中经过不经意的“脑补”而形成连续的动态影像。当然这只是普通的2D动画的基本原理,这里有个隐含的前提,就是你至少要在每一秒钟有近乎连续的24张图像,对于一般的摄像机拍摄视频来说,这不是问题,只是摄影师考虑拍摄角度,场景,构图原创 2021-07-18 12:20:01 · 1429 阅读 · 7 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【3】)
目录6、骨骼绑定6.1、Shader中的骨骼绑定6.2、aiMesh中的骨骼绑定信息6.3、骨骼绑定信息的解算7、骨骼树(骨架)6、骨骼绑定 搞清楚了基本的骨骼动画的基本原理,那么就直接来进入“骨骼绑定”的编程学习,至于过于复杂的理论,就不多介绍了,我觉得直接上源码可能更容易让大家快速掌握骨骼动画,过多的理论反而让大家会觉得无从下手。6.1、Shader中的骨骼绑定 首先从数据的角度讲,骨骼绑定在Shader中就是指在顶点的数据结构中扩展属性,用以指明顶点受其影响的骨骼的索引号,以及受影响的权重原创 2021-07-18 12:04:50 · 1723 阅读 · 4 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【2】)
目录3、Assimp的导入标志4、网格(Mesh)5、骨骼动画基础3、Assimp的导入标志 一般的模型文件中,大多数情况下在建模时默认都保存成了OpenGL的右手坐标系,即z轴坐标垂直屏幕向外。而在D3D中习惯是左手坐标系,即z轴垂直屏幕向里。左右手坐标系区别如下图所示: 其实这种差别,对于现代的可编程的渲染管线来说,无论是OpenGL还是D3D都是可以随意使用左右手坐标系的,无非就是使用列矩阵左乘向量还是用行矩阵右乘向量的差别。这最终就变成了开发人员的事情,即你是习惯左手还是右手? 在原创 2021-07-18 11:58:51 · 2726 阅读 · 5 评论 -
DirectX12(D3D12)基础教程(十七)——让小姐姐翩翩起舞(3D骨骼动画渲染【1】)
1、前言 经过了一系列比较枯燥的命令行式的“外篇”系列教程后,这一篇起回归主干,继续我们的D3D12之旅,本章就利用已经学习的assimp库导入3D模型及动画,并且实现3D骨骼动画渲染。需要注意的是本章重点在骨骼动画的加载解算以及相应基本Shader的编写上,并没有加入光照、材质等功能,这样也符合本系列教程一贯的宗旨,即尽力使每个例子都简单,主题集中,防止大家分散精力。并且本章主题“3D骨骼动画”本身就稍微有些难度,所以更需要大家集中精力搞懂骨骼动画的基本原理,这也是3D动画最核心的基础之一。当然也只有原创 2021-07-18 11:43:12 · 2238 阅读 · 6 评论 -
DirectX12(D3D12)基础教程(十六)——实现渲染线程池:3个内核同步对象实现渲染线程池/大规模线程池
使用1个信标量对象 + 1个CPU屏障 + 1个事件对象共3个内核同步对象实现渲染线程池/大规模线程池管理。原创 2020-11-07 20:24:29 · 2322 阅读 · 3 评论 -
DirectX12(D3D12)基础教程(外篇四)——用Assimp载入模型基础操作(无渲染纯命令行版)
目录1、前言2、Assimp使用简介3、Assimp头文件和库文件引入4、Import模型文件5、aiScene基本数据结构及遍历5.1、Assimp类图及关系5.2、aiScene遍历5.3、网格数据(aiMesh)5.4、材质数据(aiMaterial)5.5、骨骼结构(aiNode)5.6、动画数据(aiAnimation)5.7、assimp中骨骼动画数据的总结5.8、assimp中的纹理6、命令行操作方法说明7、关于引用ATL的说明1、前言 在《外篇一》教程中,已经交代了为什么使用Assim原创 2021-06-17 19:37:04 · 3878 阅读 · 40 评论 -
DirectX12(D3D12)基础教程(外篇三)——CreateGraphicsPipelineState 错误 #682的修复,深刻理解POSITION和SV_POSITION
目录一、问题二、解决三、简析一、问题 当继续编写D3D12后续教程示例的过程中,在调用ID3D12Device::CreateGraphicsPipelineState时遇到如下的错误,调用失败,无法创建管线状态对象:D3D12 ERROR: ID3D12Device::CreateGraphicsPipelineState: Rasterization Unit is enabled (PixelShader is not NULL or Depth/Stencil test is enabled原创 2021-05-08 21:22:02 · 2506 阅读 · 20 评论 -
DirectX12(D3D12)基础教程(外篇二)——编译DirectXShaderCompiler库
目录1、前言2、准备工作3、下载DirectXShaderCompiler源码4、编译DirectXShaderCompiler1、前言 功夫不负有心人,终于DirectXShaderCompiler库,也就是HLSL的编译器开源项目源码也被我编译通过了,这是个不小的成功!于是我就乘热打铁,把整个编译的过程记录下来,并完整的分享给大家。目前HLSL Shader 已经发展到最新的V6.6版本了,按微软的叫法就是sm6.6,又增加了很多新的光追Shader特性,所以有喜欢研究编译器以及Shader编译原原创 2021-04-22 02:41:26 · 3621 阅读 · 19 评论 -
DirectX12(D3D12)基础教程(外篇一)——编译Assimp
DirectX12(D3D12)基础教程(外篇一)——编译Assimp1、前言2、Assimp库简介3、编译Assimp库的准备工作4、下载Assimp源码并编译1、前言 D3D12系列教程因为我转移精力学习Nodejs、VueJs等技能,暂时中断了一段时间,着实感觉有点对不起大家,这期间也有很多网友都在询问RTX系列教程还出不出,在这里一并向大家回复,这个系列将一直不间断,但不定期的更新下去,哪怕MS出到D3D13、D3D14…,只是时间问题请大家能够理解并谅解,毕竟人的精力是有限的,正如金大侠所言原创 2021-04-19 00:25:46 · 2310 阅读 · 8 评论 -
DirectX 12 Ultimate(Feature Level 12_2)新特性一览
原创 2020-11-03 14:12:43 · 1981 阅读 · 0 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(下)
文章目录5、用DirectComputer完成GIF帧预处理5.1、Computer Shader中以数组方式访问纹理完成帧预处理5.2、Dispatch启动GIF帧绘制5、用DirectComputer完成GIF帧预处理 当看到这一小节的标题时,可能会有点蒙,为什么不把解析出来的帧直接当成纹理用?还需要“处理”什么?其实仔细想想这不是那么简单的。前面已经啰嗦了很多关于GIF以及帧的属性读取...原创 2020-03-23 00:04:56 · 1898 阅读 · 16 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(中)
文章目录4、Direct Computer基础知识4.1、Direct Computer简介4.2、Direct Computer编程基本框架4.3、Computer Shader简介4.4、Computer Shader示例4.5、[numthreads(x, y, z)]语义文法详解4.6、通过Dispatch来批量发起GPU线程盒4.7、SV_GroupID、SV_DispatchThrea...原创 2020-03-23 00:00:14 · 1640 阅读 · 0 评论 -
DirectX12(D3D12)基础教程(十四)——使用WIC、Computer Shader显示GIF动画纹理(上)
文章目录1、前言2、GIF文件简介3、使用WIC加载并解析GIF文件3.1、解析GIF全局背景色3.2、获取GIF的像素尺寸3.3、获取像素纵横比修正图片像素尺寸3.4、读取GIF帧和属性3.5、创建GIF纹理(画板)和帧纹理1、前言 在本系列教程开头的几章中,开初使用的纹理加载组件是WIC。后来在不断的编码过程中,通过慢慢的摸索学习我才发现之前可能一直有点误解WIC这个组件了。其实这个组件...原创 2020-03-22 23:02:25 · 2886 阅读 · 10 评论 -
DirectX12(D3D12)基础教程(十三)——D2D、DWrite On D3D12与文字输出
1、 前言 在经过了前面一系列章节的“狂轰滥炸”式的学习之后,如果你现在跟进到了这里,那么请为自己点个赞先! 从本章开始,教程内容都会开始使用Markdown方式进行发布。一方面主要是为了练习Markdown编辑器的使用;另一方面Markdown目前已经成为比较流程的程序文档的编辑方式,我也来跟跟潮流,也是让大家习惯Markdown。还有就是Markdown的公式编辑比较简洁,后续的文章中...原创 2020-03-12 01:37:43 · 6511 阅读 · 20 评论 -
DirectX12(D3D12)基础教程(十二)——多线程+多显卡渲染及水彩画效果和标准简化版高斯模糊
1、前言上一章中最后一个水彩画效果是有问题的,这一讲我们特意修正这个错误。其实错误主要是因为真正的水彩画效果还需要一个后处理——高斯模糊。这一章主要的任务就是修正这个错误。同时这一章中将结合使用酷炫的多线程+多显卡渲染框架。为了能更好的理解本章教程示例,请各位最好已经仔细阅读了之前关于多线程渲染、多显卡渲染,以及Shader原始特效的章节文章及示例代码。在本章中,多线程渲染依旧是用来录...原创 2020-03-08 15:50:17 · 4045 阅读 · 5 评论 -
DirectX12(D3D12)基础教程(十一)——几个“上古时代”的基于Pixel Shader的滤镜效果
1、前言记得大约是在10多年前,还在我努力的在学习着DirectX编程和3D引擎编程的方方面面知识的时候,初次接触到了当时很先进的Shader程序。当时搜集了很多资料,其中有一份就是讲解如何在PixelShader中实现类似PhotoShop中的一些滤镜功能。这次我就将这些陈年的有意思的Shader翻出来,用D3D12再次回炉一下,也做成教程,供大家学习Shader使用。本章的源代码已...原创 2019-11-11 23:24:00 · 2245 阅读 · 7 评论 -
VS2015中设置D3D12根签名HLSL文件自动编译属性时的注意事项
在DirectX12中,一个重要的HLSL高级语法对象就是根签名对象,当前有两种主要的方式来得到根签名:一种是编写一个HLSL代码文件,然后编译得到;另一种方式是在C++代码中填充D3D12_ROOT_SIGNATURE_DESC结构体后创建得到。 后一种方法纯代码,此处暂且不表。 而利用HLSL代码文件方式时,可以利用fxc.exe工具来编译,具体做法是在VS2015中建立一个HLSL代码文件原创 2017-12-05 21:21:01 · 1297 阅读 · 0 评论 -
关于下载、编译及运行DirectX Raytracing Sample Code (DXR)若干小问题及解决方法
伴随Nvidia公司全新一代RTX20XX系显卡的发布,微软公司也及时的更新了配套的DXR演示代码。下载地址:https://github.com/Microsoft/DirectX-Graphics-Samples/releases在下载页面中主要要下载如图红色箭头所指的几个包: 下载过程中因为Github链接加密的问题,普通的下载工具下载速度慢并且会中断,因此建议使用Githu...原创 2018-09-05 11:36:20 · 3491 阅读 · 7 评论 -
DirectX12(D3D12)基础教程(十)——DXR(DirectX Raytracing)基础教程(上)
目录1、前言2、准备工作3、Raytracing Shader3.1、Raytracing Shader整体框架介绍3.2、全局变量3.2.1、渲染目标Unordered Access 2D纹理变量3.2.2、三角形网格变量3.2.3、常量缓冲3.2.4、加速结构体变量3.3、基本光线追踪渲染过程框架3.4、光线发射函数(Ray Generatio...原创 2019-09-30 11:49:12 · 11942 阅读 · 24 评论 -
DirectX12(D3D12)基础教程(九)——多线程渲染BUG修正及MsgWaitForMultipleObjects函数详解
1、前言距离该系列文章上一篇文章已经有近半年多时间了,大家一定很好奇,为什么不继续下去了呢?说好的光追渲染去哪了呢?OK,请大家稍安勿躁,首先,光追渲染的示例正在紧张的编写当中,教程也在有条不紊的准备中,只是因为光追渲染目前在我的电脑上只能以Fallback形式运行,而征服Fallback库有点麻烦,需要些时间;其次,在这近半年多的时间里,除了忙于工作,我主要是在按计划学习Docker、G...原创 2019-09-11 23:35:23 · 1581 阅读 · 8 评论 -
DirectX12(D3D12)基础教程(八)——多显卡渲染基础、共享纹理、多GPU同步
目录1、前言2、为什么要多显卡渲染3、多显卡渲染核心原理3.1、多GPU拓扑模型及工作方式3.1.1、隐式多显卡系统3.1.2、显式多显卡系统3.1.3、链接的多显卡系统3.1.4、无链接的多显卡系统3.2、无链接显式多显卡系统的核心关键点——共享资源4、异构多显卡渲染框架示例——核显+独显方式4.1、创建多个设备对象4.2、创建交换链及渲染目标...原创 2019-02-01 20:39:50 · 11495 阅读 · 7 评论 -
DirectX12(D3D12)基础教程(七)——渲染到纹理、正交投影、UI渲染基础
目录 1、前言2、渲染到纹理3、调试支持4、正交投影5、UI渲染基础6、本章完整代码链接1、前言记得那是在差不多10多年前,我在工作中认识了一位好兄弟小杨。那时他刚毕业,跟我是同一所大学,算我的校友。彼时,我已工作快10年了,在当时那家不大的软件公司管VC++研发部。小杨加入了我的团队。他长了个圆脸,跟我一样戴副眼镜,话语不多,而且眼睛中并没有闪烁着我希望看到的...原创 2019-01-26 14:05:00 · 5961 阅读 · 22 评论 -
DirectX12(D3D12)基础教程(六)——多线程渲染
目录 1、前言2、为什么要多线程渲染3、多线程3.1、什么是线程3.2、进程的主线程3.3、线程的入口函数3.4、创建线程3.5、CreateThread示例3.6、C/C++创建线程函数(VC版)3.7、_beginthreadex示例3.8、线程退出3.9、线程的暂停(挂起)和恢复3.10、线程的暂停式创建3.11、线程栈3...原创 2019-01-14 21:39:37 · 14516 阅读 · 31 评论 -
DirectX12(D3D12)基础教程(五)——理解和使用捆绑包,加载并使用DDS Cube Map
目录 1、前言2、加载DDS3、捆绑包(Bundles)4、完整代码1、前言这一次距上一篇教程又隔了有一段时间了,如果你看了之前的教程的话,马上就会想到悲催的我是不是又遇到了什么麻烦?应该说你能这样想那么恭喜你,你猜对了,这次搞得我人仰马翻的是DDS纹理。其实在我之前的教程中乐观的估计了WIC库,其实这个库根本就不能用来加载DDS型的纹理。当然教程到这里,我已经被纹理问...原创 2018-11-19 22:48:44 · 9675 阅读 · 7 评论