DirectX 11 叠加

use*_*628 5 directx overlay 2d matrix directx-11

我正在为游戏编写 DirectX 11 覆盖。创建纹理非常简单,而且我对 C/C++ 有很好的了解。

我遇到的问题是在我的测试窗口中我可以打印纹理,但是一旦我改变相机角度,纹理就会随之移动。这就是大多数人想要的。

我想知道的是如何以 2D 打印某些内容,以便无论相机是否移动,始终显示在屏幕上?

cat*_*ier 4

基本上,由于您使用 dx11,因此您可以使用着色器来渲染元素。

因此标准 3D 对象通常遵循以下准则: - 使用 3 种变换:世界(位置对象)、视图(相机空间中的变换)、投影(屏幕空间中的变换)。

在顶点着色器中,您将所有这些相乘以从 3d 转换为 2d。

由于现在您想要的是以 2d 方式显示元素(与相机无关),因此您可以轻松创建一个不考虑视图/投影的新着色器,因此您只需不在顶点着色器中使用这些矩阵即可。(您仍然可以使用世界进行二维变换)。

这几乎是最简单的方法,如果您需要像素精确的二维元素,您需要创建一个广告牌变换/着色器。基本上,您拥有渲染目标分辨率,并且标准渲染空间为 -1 -> 1,因此您可以修改比例/平移以在这两个空间之间进行转换。

当渲染叠加时,还要确保完全禁用深度。

如果您需要样品,请告诉我,我会很快制作一个,但应该非常简单。