DirectX 11 叠加层

5
我正在为一款游戏编写DirectX 11叠加层。创建纹理非常简单,我对C/C++有很好的了解。
我遇到的问题是,在我的测试窗口中,我可以打印纹理,但是一旦我改变相机角度,纹理就会随之移动。这正是大多数人想要的。
我想知道的是如何在2D中打印某些内容,无论相机是否移动,它始终出现在屏幕上?

没有任何代码是不可能知道出了什么问题的。一种方法是在屏幕上绘制一个纹理矩形。这意味着您需要一个正交投影变换,而且根本不需要视图或世界变换。 - Nico Schertler
我认为这很有帮助,谢谢。我会回复你并让你知道的。 - user2600628
我已经禁用了世界矩阵,它仍然按照应该的方式在屏幕上打印,但是让视图矩阵离开投影矩阵成为唯一的矩阵是另一回事。 - user2600628
1个回答

4
基本上,由于您使用dx11,您需要使用着色器来渲染元素。因此,标准的3D对象通常遵循以下准则: -使用3个变换:世界(定位物体)、视图(相机空间中的变换)、投影(屏幕空间中的变换)。
在顶点着色器中,您将所有这些乘起来以从3D转换为2D。现在,您想要的是在2D中显示元素(与相机无关),因此可以轻松创建一个新的着色器,该着色器不考虑视图/投影,因此您在顶点着色器中不使用这些矩阵(仍然可以使用世界矩阵进行2D转换)。
如果您需要像素精确的2D元素,则需要创建广告牌变换/着色器。基本上,您有您的渲染目标分辨率,而标准渲染空间为-1-> 1,因此您修改比例/平移以在这两个空间之间进行转换。当您渲染叠加时,还要确保完全禁用深度。如果您需要示例,请告诉我,我会快速制作一个,但它应该很简单。

我已经让它工作了。如果我有+15分,我会给你加分的。谢谢。 :) - user2600628

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接