c++ - 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 个三角形 - 一个在正确的位置,2 个在错误的位置。
解决方案
由于您明确指定了三角形,因此您应该使用
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}
推荐阅读
- python - 为什么python中的csv只写最后一行?
- php - php 7 调用未定义函数 bcpowmod()
- javascript - 十进制格式验证
- java - 知道如何解决这个问题吗?线程“WindowsNativeRunloopThread”中的异常 java.lang.NoSuchMethodError
- python-3.x - 从excel表制作python字典
- c# - Button_Clicked 事件操作特定元素(纯 C# (Page.cs))
- android - Android 未经检查的分配
- forms - 您如何访问 Gravity Form 字段预提交?
- javascript - 如何获取 .eslintrc.js 忽略所有无 js 文件
- xml - XSLT value-of 返回实际值而不是节点