gpt4 book ai didi

c++ - DX11 中的顶点缠绕顺序

转载 作者:搜寻专家 更新时间:2023-10-31 01:44:15 25 4
gpt4 key购买 nike

我试图用 dx11 绘制一个简单的正方形,但每个三角形的索引顺序决定了它是否显示。我在光栅化器状态下将剔除模式设置为无,但它似乎没有任何改变。

如果我将第一个三角形的顶点指定为 0、1、2 而不是 2、1、0,则该三角形不会显示。所以我的问题是,无论剔除模式如何,我是否都需要以特定方式对三角形的顶点进行排序?

附言我正在绘制三角形列表而不是 strip 。

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);

最佳答案

So my question is, do I need to order the vertices of a triangle in a specific way regardless of the cull mode?

** Define/Draw your vertices in clockwise order, and don't change the default cull mode.**

判断一个三角形是否可以显示,需要考虑2个因素

  1. 正面,或者你称之为绕序,Direct3D默认将一个按顺时针顺序定义的顶点视为正面,除正面之外的所有面都是背面。
  2. 剔除模式,默认情况下,Direct3D 将剔除背面(顶点按逆时针顺序定义的面)。

可以在D3D11_RASTERIZER_DESC中设置正面和剔除模式结构

将剔除模式更改为 NONE 时没有看到差异的原因是因为两个三角形的顺序相同,而 D3D11_CULL_NONE 表示没有剔除任何面。

如果三角形 1 是顺时针顺序,三角形 2 是逆时针顺序,则当您将剔除模式设置为 D3D11_CULL_FRONT 或 D3D11_CULL_BACK 时,您只会看到一个三角形,而当您将其设置为 D3D11_CULL_NONE 时,您将看到两个三角形。

关于c++ - DX11 中的顶点缠绕顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23790272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com