Matrix DirectX 11覆盖

Matrix DirectX 11覆盖,matrix,directx,2d,overlay,directx-11,Matrix,Directx,2d,Overlay,Directx 11,我正在为一个游戏编写DirectX 11覆盖图。创建纹理非常简单,我对C/C++有很好的了解 我遇到的问题是,在我的测试窗口中,我可以打印纹理,但只要我更改相机角度,纹理就会随之移动。这是大多数人想要的 我想知道的是,如何在2D中打印某些内容,以便无论摄影机是否移动都始终显示在屏幕上?基本上,因为使用dx11,所以使用着色器渲染元素 因此,标准3d对象通常遵循以下准则: -使用3种变换:世界(位置对象)、视图(摄影机空间中的变换)、投影(屏幕空间中的变换) 在顶点着色器中,您将所有这些部分相乘,

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

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


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

基本上,因为使用dx11,所以使用着色器渲染元素

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

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

因为现在您想要的是在2d中显示元素(与摄影机无关),所以可以轻松创建一个不考虑视图/投影的新着色器,这样您就不用在顶点着色器中使用这些矩阵。(您仍然可以使用world进行二维变换)

这是最简单的方法,如果需要像素精确的2d元素,则需要创建公告牌变换/着色器。基本上,您有自己的渲染目标分辨率,标准渲染空间为-1->1,因此您可以修改缩放/平移以在这两个空间之间进行转换

渲染覆盖时,还要确保完全禁用深度


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

如果没有任何代码,就无法判断出哪里出了问题。一种方法是在屏幕上绘制纹理矩形。这意味着你需要一个图像投影变换,而不需要任何视图或世界变换。我想这对你很有帮助。我会给你回复,让你知道。我已经禁用了世界矩阵,它仍然会像它应该的那样在屏幕上打印,但是视图矩阵离开投影矩阵作为唯一的矩阵是不一样的。我已经让它工作了。如果我有+15分,我会提高你的分数。谢谢。:)