Matrix 我可以在DirectX中同时使用正交投影和透视投影矩阵吗。我该怎么办?

Matrix 我可以在DirectX中同时使用正交投影和透视投影矩阵吗。我该怎么办?,matrix,directx,projection,perspective,orthographic,Matrix,Directx,Projection,Perspective,Orthographic,所以,我想开始制作一个游戏引擎,我意识到我必须同时绘制3D对象和GUI(即时模式) 3D对象将使用透视投影矩阵,由于GUI位于2D空间,我将不得不使用正交投影矩阵 那么,我该如何实现这一点呢?请任何人指导我。我不是专业的图形程序员 另外,我使用的是DirectX 11,所以请保持这种方式。在我的回答之前,当我说“同时绘制”时,我指的是通过一次调用(或DrawIndexed/DrawAuto/etc)进行的所有绘制。你的意思可能不同 您不需要同时使用正交投影和透视投影绘制对象,而且这不是很常见 通

所以,我想开始制作一个游戏引擎,我意识到我必须同时绘制3D对象和GUI(即时模式)

3D对象将使用透视投影矩阵,由于GUI位于2D空间,我将不得不使用正交投影矩阵

那么,我该如何实现这一点呢?请任何人指导我。我不是专业的图形程序员


另外,我使用的是DirectX 11,所以请保持这种方式。

在我的回答之前,当我说“同时绘制”时,我指的是通过一次调用(或DrawIndexed/DrawAuto/etc)进行的所有绘制。你的意思可能不同

您不需要同时使用正交投影和透视投影绘制对象,而且这不是很常见

通常,投影矩阵通过着色器常数提供给顶点着色器(或者经常通过世界、视图和投影矩阵的串联)。绘制透视对象时,将绑定一组常量;绘制正交对象时,将设置不同的常量。通常,不同的着色器用于渲染透视和正交对象,因为它们通常具有完全不同的属性(例如照明等)

您可以同时绘制两种不同类型的对象,有几种方法可以实现这一点。一种简单的方法是向顶点着色器提供两个投影矩阵,并有一个额外的顶点流来确定要使用哪个投影矩阵


在某些边缘情况下,您可能会从这种批处理中获得一些小的性能好处。我不建议你那样做。让您的生活更轻松,并对正交对象和透视对象使用单独的绘制调用。

在我的回答之前,当我说“同时绘制”时,我指的是通过单个调用(或DrawIndexed/DrawAuto/等)进行的所有绘制。你的意思可能不同

您不需要同时使用正交投影和透视投影绘制对象,而且这不是很常见

通常,投影矩阵通过着色器常数提供给顶点着色器(或者经常通过世界、视图和投影矩阵的串联)。绘制透视对象时,将绑定一组常量;绘制正交对象时,将设置不同的常量。通常,不同的着色器用于渲染透视和正交对象,因为它们通常具有完全不同的属性(例如照明等)

您可以同时绘制两种不同类型的对象,有几种方法可以实现这一点。一种简单的方法是向顶点着色器提供两个投影矩阵,并有一个额外的顶点流来确定要使用哪个投影矩阵


在某些边缘情况下,您可能会从这种批处理中获得一些小的性能好处。我不建议你那样做。使您的生活更轻松,并对正交和透视对象使用单独的绘制调用。

通常一次只使用一个投影矩阵,但可以使用不同的矩阵绘制多个渲染过程到同一渲染目标。由于您不熟悉DirectX 11,您应该了解。通常一次只使用一个投影矩阵,但可以使用不同的矩阵绘制多个渲染过程到同一渲染目标。由于您是DirectX 11的新手,您应该看看。