首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

DX 贴丹青不出来

2013-06-19 
DX 贴图画不出来void GenerateData(){rap3d.GetDevice()-CreateVertexBuffer( 10*sizeof(LVertex),D3DUSA

DX 贴图画不出来
void GenerateData()
{
rap3d.GetDevice()->CreateVertexBuffer( 10*sizeof(LVertex),  
D3DUSAGE_WRITEONLY, VertexFVF, D3DPOOL_DEFAULT, &pBigSquareVB, NULL );
LVertex * v;
pBigSquareVB->Lock( 0, 0, (void**)(BYTE**)&v, 0 );

v[0].x  = 0.0f;  v[0].y  = 0.0;  v[0].z  = 0.0f;
v[0].diffuse  = 0xffff0000;
v[0].tu = 0.0f;  v[0].tv = 0.5f;

v[1].x  = 0.0f;  v[1].y  = 5.0f;  v[1].z  = 0.0f;
v[1].diffuse  = 0xff0000ff;
v[1].tu = 0.5f;  v[1].tv = 0.5f;

v[2].x  = 5.0f;  v[2].y  = 5.0f;  v[2].z  = 0.0f;
v[2].diffuse  = 0xffffffff;
v[2].tu = 0.5f;  v[2].tv = 0.0f;

v[3].x  = 5.0f; v[3].y  = 0.0f; v[3].z  = 0.0f;
v[3].diffuse  = 0xff000fff;
v[3].tu = 0.0f;  v[3].tv = 0.0f;

/*v[4].x  = 10.0f; v[4].y  =10.0f;  v[4].z = 0.0f;
v[4].diffuse  = 0xffffff00;
v[4].specular = 0xffff0000;
v[4].tu = 0.0f; v[4].tv = 0.0f;

v[5].x  = 10.0f; v[5].y  = 15.0f;  v[5].z = 0.0f;
v[5].diffuse  = 0xffffff00;
v[5].specular = 0xffff0000;
v[5].tu = 0.0f; v[5].tv = 0.0f;

v[6].x  = 5.0f; v[6].y  = 15.0f;  v[6].z = 0.0f;
v[6].diffuse  = 0xffffff00;
v[6].specular = 0xffff0000;
v[6].tu = 0.0f; v[6].tv = 0.0f;

v[7].x  = 10.0f; v[7].y  = 5.0f;  v[7].z = 0.0f;
v[7].diffuse  = 0xffffff00;
v[7].specular = 0xffff0000;
v[7].tu = 0.0f; v[7].tv = 0.0f;

v[8].x  = 10.0f; v[8].y  = 10.0f;  v[8].z = 0.0f;
v[8].diffuse  = 0xffffff00;
v[8].specular = 0xffff0000;
v[8].tu = 0.0f; v[8].tv = 0.0f;

v[9].x  = 0.0f; v[9].y  = 0.0f;  v[9].z = 0.0f;
v[9].diffuse  = 0xffffff00;
v[9].specular = 0xffff0000;
v[9].tu = 0.0f; v[9].tv = 0.0f;
*/
pBigSquareVB->Unlock();
}
bool MyTestRender()
{
if (TexMan.GetTex("girl"))
{
rap3d.GetDevice()->SetTexture(0,TexMan.GetTex("girl"));
}
rap3d.GetDevice()->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_MODULATE );
rap3d.GetDevice()->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
rap3d.GetDevice()->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
rap3d.GetDevice()->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
rap3d.GetDevice()->SetFVF(VertexFVF);
rap3d.GetDevice()->SetStreamSource(0, pBigSquareVB, 0, sizeof(LVertex));


rap3d.GetDevice()->DrawPrimitive(   D3DPT_TRIANGLEFAN  , 0 ,2);

return true;
}


[解决办法]
你在设置顶点数据时,只有四个顶点,这是不对的。DX按照每三个顶点一组绘制三角形,还有绘制时有剔除,默认是剔除背面的,你检查一下看看

热点排行