首先是我的代码的重要部分。
创建顶点。
D3DVertexTexture Vertices[] =
{
{-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, },
{ 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, },
{ 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, },
{-1.0f, -1.0f, 0.0f, 0.0f, 1.0f, },
};
创建顶点缓冲区。
D3DDevice->CreateVertexBuffer(sizeof(Vertices),
0,
D3DFVF_CUSTOMVERTEXTEXTURE,
D3DPOOL_MANAGED,
&vb,
NULL);
内存垃圾。
void* pVoid;
vb->Lock(0, sizeof(pVoid), (void**) &pVoid, 0);
memcpy(pVoid, Vertices, sizeof(Vertices));
vb->Unlock();
加载纹理。
D3DXCreateTextureFromFile(D3DDevice, "images/tex.png", &t);
呈现。
D3DDevice->SetFVF(D3DFVF_CUSTOMVERTEXTEXTURE);
D3DDevice->SetTexture(0, t);
D3DDevice->SetStreamSource(0, vb, 0, sizeof(D3DVertexTexture));
D3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
我的问题在哪里。
它显示一个正方形,但像这样的三角形缺少边的左侧。
最佳答案
三角形带中的顶点 A、B、C、D 将产生两个三角形:A、B、C 和 B、C、D
A -- B A--B B | | \ | /| | | \| / | D -- C C D--C
看那张图,画出那两个三角形……
然后按照正确的顺序放置顶点 - 三角形带应该“之字形”,而不是按顺时针或逆时针顺序进行。
如果您按顺序排列它们:A、B、D、C - 四边形将正确绘制。
关于c++ - DirectX 当我将纹理添加到四边形时,三角形以某种方式弄乱了,修复了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13895353/