首先,这是我的代码的重要部分。
创建顶点。
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);
我的问题在哪里。
它显示一个正方形,但侧面的左侧缺少像这样的三角形。
答案 0 :(得分:4)
三角形条带中的顶点A,B,C,D将产生两个三角形:A,B,C和B,C,D
A -- B A--B B | | \ | /| | | \| / | D -- C C D--C
看一下那个图并画出那两个三角形......
然后按正确的顺序放置顶点 - 三角形条带应为“之字形”,而不是顺时针或逆时针顺序。
如果您订购它们:A,B,D,C - 四边形将正确绘制。
答案 1 :(得分:0)
您是否尝试按此顺序定义顶点:
D3DVertexTexture Vertices[] =
{
{ 1.0f, -1.0f, 0.0f, 1.0f, 1.0f, },
{-1.0f, -1.0f, 0.0f, 0.0f, 1.0f, },
{-1.0f, 1.0f, 0.0f, 0.0f, 0.0f, },
{ 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, },
};
我相信绘制顶点的顺序默认为顺时针顺序。您定义的顺序不正确。