在 DirectX 中遇到拓扑问题
Having trouble with topologies in DirextX
我正在尝试在 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 个三角形 - 一个在正确的位置,两个在错误的位置。
既然你明确指定了三角形,你应该使用
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}
我正在尝试在 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 个三角形 - 一个在正确的位置,两个在错误的位置。
既然你明确指定了三角形,你应该使用
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}