首先建立乙個
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...