ID3DXMesh介面 建立自己的立方體網格

2022-07-25 15:06:18 字數 2427 閱讀 2915

首先建立乙個

id3dxmesh

介面。 id3dxmesh

介面的說明可以引數龍書。

這裡主要是用**來講解:

#define vertex_fvf   (d3dfvf_xyz | d3dfvf_tex1)

hr = d3dxcreatemeshfvf(

12,24,

d3dxmesh_managed,

vertex_fvf,

m_pd3ddevice,

&pmesh

);vertex vertices =

, ,

, ,

//側¨¤面?r

, ,

, ,

//後¨®面?

, ,

, ,

, ,

, , ,

, ,

, /* ,

, ,

*/,

, ,

, //底下的面。需要用逆時針。不然會被剔除

};把上面的頂點資料拷貝到 網格裡面

void* pbuffer;

pmesh->lockvertexbuffer(0,(void**)&pbuffer);

memcpy(pbuffer,vertices,sizeof(vertices));

pmesh->unlockvertexbuffer();

接著建立 索引資料

word* i = 0;

pmesh->lockindexbuffer(0, (void**)&i);

// fill in the front face index data

i[0] = 0; i[1] = 1; i[2] = 2;

i[3] = 0; i[4] = 2; i[5] = 3;

// fill in the back face index data

i[6] = 4; i[7] = 5; i[8] = 6;

i[9] = 4; i[10] = 6; i[11] = 7;

// fill in the top face index data

i[12] = 8; i[13] = 9; i[14] = 10;

i[15] = 8; i[16] = 10; i[17] = 11;

// fill in the bottom face index data

i[18] = 12; i[19] = 13; i[20] = 14;

i[21] = 12; i[22] = 14; i[23] = 15;

// fill in the left face index data

i[24] = 16; i[25] = 17; i[26] = 18;

i[27] = 16; i[28] = 18; i[29] = 19;

// fill in the right face index data

i[30] = 20; i[31] = 21; i[32] = 22;

i[33] = 20; i[34] = 22; i[35] = 23;

pmesh->unlockindexbuffer();

//下面是建立了6個集合,建立多少個介面。後面就需要繪製幾個集合

dword* attributeeuffer = 0;

pmesh->lockattributebuffer(0,&attributeeuffer);

for ( int a = 0; a < 2; a++)

for ( int b = 2; b < 4; b++)

for ( int c = 4; c < 6; c++)

//優化

hr = pmesh->optimizeinplace(

d3dxmeshopt_attrsort |

d3dxmeshopt_compact |

d3dxmeshopt_vertexcache,

&adjacencybuffer[0],

0, 0, 0);

for ( int c = 6; c < 8; c++)

for ( int c = 8; c < 10; c++)

for ( int c = 10; c < 12; c++)

pmesh->unlockattributebuffer();

std::vectoradjacencybuffer(pmesh->getnumfaces() * 3);

pmesh->generateadjacency(0.0f, &adjacencybuffer[0]);

for(int i = 0; i < 6; i++)

如何建立ID3DInclude的例項

這篇文章翻譯部落格主人。在此表示感謝。為了程式設計師研究生入學申請,我最近正在寫乙個關於directx api的簡單的框架,這個框架可以使得direct xapi更容易使用。由於實時地形生成程式執行在gpu上因此和shader息息相關。為了使得事情輕鬆愉快,我想要盡可能的將程式與shader抽離開。...

使用Runnable介面建立執行緒 3

實現runnable介面的類必須使用thread類的例項才能建立執行緒。通過runnable介面建立執行緒分為兩步 1.將實現runnable介面的類例項化。2.建立乙個thread物件,並將第一步例項化後的物件作為引數傳入thread類的構造方法。最後通過thread類的start方法建立執行緒。...

建立自己的3D靜態模型檔案

跟著我一步一步來吧 我的思路和過程 我有乙個能畫出微軟例子中tiger.x的工程,其中建立mesh的 片斷如下 中有一些變數在.h文件中定義的 hresult cmymesh create lpdirect3ddevice9 pdevice,string meshfile pd3dxmtrlbuff...