我试图用dx11绘制一个简单的正方形,但每个三角形的索引顺序决定它是否显示。我在光栅化器状态下将剔除模式设置为无,但它似乎没有改变任何东西。
如果我将第一个三角形的顶点指定为0,1,2而不是2,1,0,那么三角形就不会显示出来。所以我的问题是,无论剔除模式如何,我是否需要以特定方式对三角形的顶点进行排序?
P.S。我正在绘制一个三角形列表而不是条带。
UINT indices[] = {2, 1, 0,
1, 3, 0};
MeshVertex vertices[] =
{
{ Vector3(1.0f, 1.0f, 0.0f)}, //Top Right
{ Vector3(-1.0f, -1.0f, 0.0f)}, //Bottom Left
{ Vector3(1.0f, -1.0f, 0.0f)}, //Bottom Right
{ Vector3(-1.0f, 1.0f, 0.0f)} //Top Left
};
mesh = new Mesh(vertices, indices, 4, 6, shader);
答案 0 :(得分:3)
所以我的问题是,我是否需要在一个三角形中排序三角形的顶点 具体方式无论剔除模式?
**按顺时针顺序定义/绘制顶点,不要更改默认值 剔除模式。**
要确定是否可以显示三角形,您必须考虑2个因素
您可以在D3D11_RASTERIZER_DESC结构
中设置正面和剔除模式当您将剔除模式更改为NONE时,您没有看到差异的原因是因为两个三角形的顺序相同而D3D11_CULL_NONE表示没有剔除任何面。
如果三角形1是顺时针顺序而三角形2是逆时针顺序,当您将剔除模式设置为D3D11_CULL_FRONT或D3D11_CULL_BACK时,您将只看到一个三角形,并在将它设置为D3D11_CULL_NONE时看到两个三角形。