dev*_*roy 1 directx directx-11 directx-10
我试图在输入汇编器设置为三角形条带的情况下创建这个2D三角形:
1.(0.0f, 0.0f, 0.5f)
2.(-0.5f, 0.0f, 0.5f)
3.(-0.5f, -0.5f, 0.5f)
Run Code Online (Sandbox Code Playgroud)
但是,没有绘制三角形,实际上渲染目标上没有绘制任何内容,甚至没有绘制单行.我搞砸周围,然后我换坐标2
和3
,和它的工作.正如我想要的那样绘制三角形.这种奇怪行为的原因是什么?
您可以按逆时针顺序定义顶点,默认情况下Direct3D将以逆时针顺序剔除面,因此在背面剔除过程中您的三角形被剔除,因此您无法渲染任何内容.
在DirectX中绘制三角形时,应该考虑两件事.
您定义顶点的顺序决定了正面和背面.正面是以顺时针顺序定义顶点的正面,尝试按顺时针顺序定义顶点.
剔除模式指定如何剔除背面三角形,尝试使用D3D11_CULL_NONE来测试代码,这将确保每个三角形都将呈现,而不管顶点的定义顺序如何.
绘制三角形条时应小心,因为背面剔除标志会在偶数三角形上自动翻转.考虑以下图片.对于第一个三角形v1v2v3,剔除模式是逆时针方向,它将被渲染,对于第二个三角形v2v3v4,剔除模式翻转为顺时针方向,它也将被渲染.对于第三个三角形,剔除模式再次变回,依此类推.如果要渲染这样的三角形条带,则应按此顺序定义顶点:v1,v2,v3,v4,... vn.