我正在尝试在DirectX 11中绘制四边形,但是我有一些问题:
VERTEX vert[] = {
{-0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 0.0f},
{5.0f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f},
{-0.5f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f}
};
//0, 1, 2,
//2, 3, 0
vbo->Update(vert);
vbo->Bind();
deviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
deviceContext->Draw(6, 0);
它将绘制3个三角形-一个在正确的位置,两个错误的三角形。
答案 0 :(得分:0)
由于您明确指定了三角形,因此应使用
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST
这会将每3个顶点视为三角形的一部分>
如果是三角形带,则只需绘制4个顶点,因为将使用此索引完成绘制:
Triangle 0->1->2
Triangle 1->2->3
在这种情况下绘制的正确数组是:
{-0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{-0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 0.0f},
{5.0f, 0.5f, 0.0f, 0.0f, 1.0f, 0.0f}