[英]Vertex Winding Order in DX11
我试图用 dx11 绘制一个简单的正方形,但每个三角形的索引顺序决定了它是否出现。 我在光栅化器状态下将剔除模式设置为无,但它似乎没有任何改变。
如果我将第一个三角形的顶点指定为 0, 1, 2 而不是 2, 1, 0 则三角形不会出现。 所以我的问题是,无论剔除模式如何,我都需要以特定方式对三角形的顶点进行排序吗?
PS我正在绘制三角形列表而不是条带。
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);
所以我的问题是,无论剔除模式如何,我都需要以特定方式对三角形的顶点进行排序吗?
** 按顺时针顺序定义/绘制顶点,不要更改默认的剔除模式。**
判断一个三角形能否显示,需要考虑2个因素
您可以在D3D11_RASTERIZER_DESC结构中设置正面和剔除模式
当您将剔除模式更改为 NONE 时您没有看到差异的原因是因为两个三角形的顺序相同并且 D3D11_CULL_NONE 意味着没有剔除任何面。
如果三角形 1 为顺时针顺序,三角形 2 为逆时针顺序,则将剔除模式设置为 D3D11_CULL_FRONT 或 D3D11_CULL_BACK 时您只会看到一个三角形,而将其设置为 D3D11_CULL_NONE 时您将看到两者。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.