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