directX
文章平均质量分 60
0点51胜
这个作者很懒,什么都没留下…
展开
-
DirectX3D 正交投影学习记录
所谓正交投影变换,就是已知盒状可视空间内任意点坐标(x,y,z),求解垂直投影到xy平面的对应点坐标。按照这个定义,xyz坐标系本身就是正交坐标系,盒状可视空间内任意点的坐标(x,y,z)投影到(x,y)平面,只要简单地丢弃z坐标就可以啦,即(x,y,z)变换到(x,y,0)即可,这个理解完全没有问题,但却不是正确的结果,那么原因是什么呢?原创 2023-10-15 18:21:46 · 785 阅读 · 0 评论 -
WRL::ComPtr 的坑
ComPtr 对象 使用取地址符时,会先将原指针释放,再取地址。如果只是想用 ComPtr 的值,需要调用 GetAddressOf() 函数。原创 2022-11-02 00:28:16 · 181 阅读 · 0 评论 -
Direct3D 11 总结 —— 10 变换
_mm_set_ps 是倒叙放置的,参考原创 2022-05-15 23:34:47 · 505 阅读 · 0 评论 -
Direct3D 11 总结 —— 9 通过键盘调整绿幕抠图阈值
介绍本文主要介绍如何通过键盘设置绿幕抠图的阈值,通过设置不同的阈值,看最终的结果。最终结果阈值为 0.9阈值为 0.2阈值为 0.5知识点获取键盘输入当键盘按下后,会给窗口的回调函数,传入 msg:WM_KEYDOWN 事件,并通过 wparam 参数,传入是哪个键按下了。然后窗口回调通过事件的方式通知到 Graphics。将阈值传到 shader 中directX 中有个常量值 vertex shader 和 pixel shader 都可以设置,说是常量值,但是该值是可以改变原创 2022-05-03 23:26:41 · 1213 阅读 · 0 评论 -
Direct3D 11 总结 —— 8 实现简单的绿幕抠图效果
介绍绿幕抠图指将图片中的绿色扣去,并将该处的 alpha 分量设为 0,并将另外一张图片作为背景,以实现背景替换的功能,常用于电影和电视的制作场景。最终效果原始图片绿幕抠图后效果代码这一块的代码改动,主要在像素着色器 shader。ps shader本文只是实现了最简单的绿幕抠图,对于这种比较完美的图片,抠图效果较好,对于其他图片还有较大的优化空间。Texture2D tex : register(t0);SamplerState samplerLinear : register(s原创 2022-04-17 20:32:24 · 1010 阅读 · 0 评论 -
Direct3D 11 总结 —— 7 实现透明效果
介绍当两张图片重叠的时候,可以一张完全盖住另外一张,也可以实现两张图片融合的结果。本文将对图片融合展开介绍。融合的公式如下 C=Csrc⊕Fsrc1ΘCdst⊕Fdst1\ C = C_{src}\oplus F_{src1} \Theta C_{dst} \oplus F_{dst1} C=Csrc⊕Fsrc1ΘCdst⊕Fdst1 A=Asrc⊕Fsrc2ΘAdst⊕Fdst2\ A = A_{src}\oplus F_{src2} \Theta A_{ds原创 2022-04-17 19:46:31 · 1076 阅读 · 0 评论 -
Direct3D 11 总结 —— 6 绘制图片
介绍本文将在上文绘制的矩形中,绘制图片。主要步骤读取图片,并转化为纹理。将该纹理绑定到 Pipeline设置采样器,像素着色器通过该采样器对输出的纹理进行采样代码主要改动CreateWICTextureFromFile通过该函数将图片数据,读取到纹理中。 该函数来自于DirectXTex,引用了WICTextureLoader11.cpp / WICTextureLoader11.h主要向 pipeline 绑定了两个资源PSSetShaderResources读取图片到纹理,然后原创 2022-04-16 22:39:09 · 1830 阅读 · 0 评论 -
Direct3D 11 总结 —— 5 绘制矩形
介绍本文,将在上文的基础上,绘制矩形区域。一般 direct3D 通过绘制三角形,拼成其他图像,对于矩形,本文将绘制两个三角形,以拼成一个矩形。代码主要修改点输入装配阶段一个是输入的坐标点数,之前是3个点,本文输入的 4个点。绘制2个三角形,有两种方式,一种是输入6个点,其中有2对点是一样的。另外一种方式是输入4个点,在加上6个索引点。绘制命令针对两种输入方式,有两个对应的绘制命令。m_pContext->Draw(6, 0); 通过输入顶点绘制6个点绘制图形m_pContex原创 2022-04-13 23:23:21 · 1364 阅读 · 0 评论 -
Direct3D 11 总结 —— 4 绘制三角形
介绍本文主要介绍如何使用 direct3D 11 绘制三角形。pipeline 介绍从 msdn 的文章,可以获得 direct3D 的 pipeline 如下图所示,对于本文只需要设置红框内的部分。输入装配阶段在这里需要将顶点坐标、顶点数据是使用什么格式保存的(float 还是 int;是几位的等)、想要顶点组成什么图像(比如传入3个点,你可能就是想画3个点或者一条线和1一个点或者一个三角形等)顶点着色器阶段着色器就是 gpu 执行的代码,gpu 的特点是计算单元的算力有线,但是每个 gp原创 2022-04-13 00:06:30 · 986 阅读 · 0 评论 -
Direct3D 11 总结 —— 3 初始化 direct3D,并改变窗口颜色
介绍创建窗口成功之后,就要使用 direct3D 进行绘图,本节主要介绍,如何初始化 direct3D,并通过 direct3D改变窗口颜色。初始化 direct3D函数解释D3D11CreateDevice通过 D3D11CreateDevice 函数创建设备和上下文,device 主要用于显示是否支持某些特性和分配资源,context 主要用于设置渲染状态、将资源绑定到 pipeline 和 发出渲染命令。需要设置的参数有 使用的电脑上的哪个显卡(现在很多电脑上多有两块显卡,独立显卡和集成显卡原创 2022-04-10 19:28:11 · 1399 阅读 · 0 评论 -
DirectX3D 11 总结 —— 2 win32 窗口 抽象为类
说明为了代码看起来清爽一点,将上篇文章中的代码进行封装,抽象为一个类。这篇的核心是HWND hWnd = CreateWindow(WindowClass::GetInstance().get()->GetName(), // 创建的窗口类名 TEXT("First Window"), // 窗口名称 WS_OVERLAPPEDWINDOW, // 窗口类型 200, 200, // 窗口起始位置 400,原创 2022-04-10 16:00:39 · 492 阅读 · 0 评论 -
DirectX3D 11 总结 —— 1 绘制 win32 窗口
directX 3D 是什么DirectX 3D是一种应用程序的接口(API),它可让以windows为平台的游戏或多媒体程序获得更高的执行效率,加强3d图形和声音的效果,并提供设计人员一个共同的硬件驱动标准,让游戏开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。简单理解就是 windows 为了方便开发者驱动显卡运行,定义了一套 API标志,封装了硬件之间的差异,提供开发者的开发效率。绘制窗口directX 3D 主要用于图像的显示,因此首先需要创建一个窗口用于显示原创 2022-04-10 00:47:10 · 902 阅读 · 0 评论 -
错误 X3501 ‘main‘: entrypoint not found
资源文件->属性原创 2021-08-30 18:35:03 · 819 阅读 · 0 评论