我正在为游戏编写 DirectX 11 覆盖。创建纹理非常简单,而且我对 C/C++ 有很好的了解。
我遇到的问题是在我的测试窗口中,我可以打印纹理,但是一旦我改变相机角度,纹理就会随之移动。这是大多数人想要的。
我想知道的是,无论相机是否移动,我如何以 2D 打印某些东西以始终出现在屏幕上?
我正在为游戏编写 DirectX 11 覆盖。创建纹理非常简单,而且我对 C/C++ 有很好的了解。
我遇到的问题是在我的测试窗口中,我可以打印纹理,但是一旦我改变相机角度,纹理就会随之移动。这是大多数人想要的。
我想知道的是,无论相机是否移动,我如何以 2D 打印某些东西以始终出现在屏幕上?
基本上,由于您使用 dx11,因此您使用着色器来渲染元素。
因此标准 3d 对象通常遵循以下准则: - 使用 3 个变换:世界(位置对象)、视图(在相机空间中变换)、投影(在屏幕空间中变换)。
在您的顶点着色器中,您将所有这些相乘以从 3d 转换为 2d。
由于现在您想要的是在 2d 中显示您的元素(与相机无关),您可以轻松创建一个不考虑视图/投影的新着色器,因此您只需不要在顶点着色器中使用这些矩阵. (您仍然可以使用 world 进行 2d 转换)。
这几乎是最简单的方法,如果您需要像素精确的 2d 元素,则需要创建一个广告牌变换/着色器。基本上你有你的渲染目标分辨率,标准渲染空间是-1 -> 1,所以你修改缩放/平移以在这两个空间之间进行转换。
渲染叠加层时,还要确保完全禁用深度。
如果您需要样品,请告诉我,我会尽快制作一份,但应该很简单。