Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Direct X中绘制矩形_C++_Directx 9_Vertex - Fatal编程技术网

C++ 在Direct X中绘制矩形

C++ 在Direct X中绘制矩形,c++,directx-9,vertex,C++,Directx 9,Vertex,使用此处的教程,我成功地在屏幕上显示了一个红色三角形: 但是你可以看到我真的很想画一个矩形 我已将原语更改为绘制2个三角形,并将缓冲区大小扩展为自定义顶点的4*大小,但我不能说我真正理解如何将其从三角形转换为矩形。我希望: 有没有更好的方法来绘制矩形,而不是使用四边形,因为我只想在它上面放一些文字,比如: 我必须退出缓冲区,以允许4个顶点数组大小: d3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX), 0, CUSTO

使用此处的教程,我成功地在屏幕上显示了一个红色三角形:

但是你可以看到我真的很想画一个矩形

我已将原语更改为绘制2个三角形,并将缓冲区大小扩展为自定义顶点的4*大小,但我不能说我真正理解如何将其从三角形转换为矩形。我希望:

有没有更好的方法来绘制矩形,而不是使用四边形,因为我只想在它上面放一些文字,比如:


我必须退出缓冲区,以允许4个顶点数组大小:

d3dDevice->CreateVertexBuffer(4*sizeof(CUSTOMVERTEX),
    0,
    CUSTOMFVF,
    D3DPOOL_MANAGED,
    &vBuffer,
    NULL);
然后将“绘制”基本体从“三角形列表”更改为“条带”,将绘制的三角形数量扩展为2

d3dDevice->DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, 2 );

来源:

如果我错了,请纠正我,但你应该有四个顶点和一个索引缓冲区,其中包含两个三角形的适当索引,以形成矩形。因此,4个顶点=正方形的4个点,索引是绘制它们的顺序?很明显,我对顶点这个概念还很陌生,我能帮你克服这个障碍吗?或者可能是一个具体的矩形的例子?所以在你的顶点缓冲区中,你有,例如,
{(-2,2,0),(2,2,0),(2,1,0),(-2,1,0)}
(左上,右上,右下,左下)和你的索引缓冲区可能包含
{(0,1,3),(3,1,2)}
(TL,TR,BL,后跟BL,TR,BR)。索引缓冲区只是告诉它哪些顶点是按哪个顺序来的。你应该知道它是CW还是CCW以及用于剔除。您还必须使用它进行一些添加
SetIndexBuffer
等操作。原谅我,我已经有一段时间没有这么做了,我从来没有像预制网格函数那样喜欢这些函数。啊,聪明人,你说的这些预制网格函数是什么,我只是个学徒。我要看看这个索引缓冲区。嗯,我确信顶点和索引缓冲区是人们通常所做的事情,比内置缓冲区更复杂,比他们想从单独的模型文件加载的内容更简单,但我所说的内置缓冲区可以让你轻松地为普通形状创建网格。在我的头顶上,有一个
D3DXCreateSphere
,我知道还有一个立方体和一个茶壶。仅仅制作一个没有深度的立方体网格(如果允许的话,深度很小)并使用额外的十个三角形可能会更容易,但我认为这是值得学习的,我不是专家。
d3dDevice->DrawPrimitive (D3DPT_TRIANGLESTRIP, 0, 2 );