yangwangtian0 2015-05-16 03:01 采纳率: 0%
浏览 744

关于 Direct3D 顶点索引缓存的填充问题

小弟最近在学Direct3D

这两天一直纳闷那个顶点索引缓存填充的问题

因为我自己填充顶点和索引的时候画出来的立方体总是缺一个角

试了好几次也没有效果

源代码:

lpd3dDevice->CreateVertexBuffer(sizeof(CUSTOMVERTEX)*8,0,D3DFVF_CUSTOM,D3DPOOL_DEFAULT,&lpd3dVertex,NULL);

lpd3dDevice->CreateIndexBuffer(sizeof(WORD) * 36,0,D3DFMT_INDEX16,D3DPOOL_DEFAULT,&lpd3dIndex,NULL);

CUSTOMVERTEX vertex[] = 
{   

    {-20.0,-20.0,-20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {20.0,-20.0,-20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {20.0,20.0,-20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {-20.0,20.0,-20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {-20.0,-20.0,20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {20.0,-20.0,20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {20.0,20.0,20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)},
    {-20.0,20.0,-20.0,D3DCOLOR_XRGB(rand()%255,rand()%255,rand()%255)}};

void * pVertex = NULL;
lpd3dVertex->Lock(0,sizeof(vertex),(void**)&pVertex,0);
    memcpy(pVertex,vertex,sizeof(vertex));
lpd3dVertex->Unlock();

WORD Index[] = {0,1,2,0,2,3,0,1,5,0,5,4,0,4,7,0,7,3,2,3,7,2,7,6,1,2,6,1,6,5,4,5,6,4,6,7};
WORD pIndex = NULL; // 设置索引
lpd3dIndex->Lock(0,0,(void
*)&pIndex,0);memcpy(pIndex,Index,sizeof(Index));

lpd3dIndex->Unlock();

lpd3dDevice->SetRenderState(D3DRS_LIGHTING,FALSE); //关闭光照
lpd3dDevice->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW); //开启背面消隐

求大神帮助

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥35 平滑拟合曲线该如何生成
    • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
    • ¥15 名为“Product”的列已属于此 DataTable
    • ¥15 安卓adb backup备份应用数据失败
    • ¥15 eclipse运行项目时遇到的问题
    • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
    • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
    • ¥15 自己瞎改改,结果现在又运行不了了
    • ¥15 链式存储应该如何解决
    • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站