DoboWiki
Top
> 頂点バッファを作成する をテンプレートにして作成
頂点バッファを作成する をテンプレートにして作成
開始行:
*頂点バッファの作成((頂点インデックスバッファに関してもこ...
&shiftnote(nohr);
頂点バッファを作成する手順は以下の様になります。
+頂点のフォーマットを決定する。
+前項で決めた頂点フォーマットに対しCreateVertexBufferを使...
+確保したバッファにデータを送り込む。
また、頂点インデックスバッファの作成も似た様な手順になり...
+2バイト整数を使用するか4バイト整数を使用するかを決める。...
+CreateIndexBufferを使い、必要な分だけ頂点インデックスバ...
+確保したバッファにデータを送り込む。
&shiftnote(nohr);
**実際のコード [#c4cde96e]
#code(c){{
/* 頂点データのフォーマット */
struct d3dvtx_s {
D3DXVECTOR3 pnt; // 位置
D3DCOLOR clr; // 色
D3DXVECTOR2 tx1; // テクスチャ
};
/* 上の頂点フォーマットをフラグで表現する */
const int FVFVTX1_X = (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DF...
/* 動的に確保する配列 */
d3dvtx_s* VtxSet; // 頂点データ
unsigned short* VtxIdxSet; // 頂点インデックスデータ
LPDIRECT3DVERTEXBUFFER9 lpVtxBuf; // 頂点バッファ
LPDIRECT3DINDEXBUFFER9 lpIdxBuf; // 頂点インデックスバッ...
/***** ここから実際のコード *****/
/* ここでlpD3DdevはLPDIRECT3DDEVICE9型で定義された有効な...
// 必要な数だけ頂点用の配列を確保する
VtxSet = new d3dvtx_s[9];
// 頂点のセット
SetVertex(0, 0.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(1, 1.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(2, 2.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(3, 0.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(4, 1.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(5, 2.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(6, 0.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(7, 1.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(8, 2.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
// 頂点バッファに確保するサイズの計算
size_t wsz = 9 * sizeof(d3dvtx_s);
// 頂点バッファの確保
lpD3Ddev->CreateVertexBuffer(wsz, 0, FVFVTX1_X, D3DPOOL_...
// 確保する頂点バッファを宣言
d3dvtx_s* vbuf;
// ロック
lpVtxBuf->Lock(0, 0, reinterpret_cast<void**>(&vbuf), D3...
// データの転送
memcpy(vbuf, VtxSet, wsz);
// 解放
lpVtxBuf->Unlock();
// 頂点インデックスの確保(ここでは頂点1, 3, 7を使って三...
VtxIdxSet = new unsigned short[3];
VtxIdxSet[0] = 1;
VtxIdxSet[1] = 3;
VtxIdxSet[2] = 7;
// 頂点インデックスバッファを確保するサイズ
size_t isz = 3 * sizeof(unsigned short);
// 頂点インデックスバッファの確保(2バイト整数のバッファ...
lpD3Ddev->CreateIndexBuffer(isz, 0, D3DFMT_INDEX16, D3DP...
// 確保する頂点インデックスバッファを宣言
unsigned short* ibuf;
// ロック
lpIdxBuf->Lock(0, 0, reinterpret_cast<void**>(&ibuf), D3...
// 転送
memcpy(ibuf, VtxIdxSet, isz);
// 解放
lpIdxBuf->Unlock();
// デバイスにインデックスをセット
lpD3Ddev->SetIndices(lpIdxBuf);
}}
なお、頂点セット用の関数SetVertexは以下の様に定義されてい...
あとここでは範囲チェックを省略していますが、実際にはidがV...
#code(c){{
void SetVertex(int id, float x, float y, float z, D3DCOLO...
(VtxSet + id)->pnt.x = x;
(VtxSet + id)->pnt.y = y;
(VtxSet + id)->pnt.z = z;
(VtxSet + id)->clr = c;
(VtxSet + id)->tx1.x = u;
(VtxSet + id)->tx1.y = v;
}
}}
なお、頂点データの表示に関しては[[DrawIndexedPrimitiveに...
//これより下は編集しないでください
#pageinfo([[:Category/DirectX]],2006-08-05 (土) 00:04:59,...
終了行:
*頂点バッファの作成((頂点インデックスバッファに関してもこ...
&shiftnote(nohr);
頂点バッファを作成する手順は以下の様になります。
+頂点のフォーマットを決定する。
+前項で決めた頂点フォーマットに対しCreateVertexBufferを使...
+確保したバッファにデータを送り込む。
また、頂点インデックスバッファの作成も似た様な手順になり...
+2バイト整数を使用するか4バイト整数を使用するかを決める。...
+CreateIndexBufferを使い、必要な分だけ頂点インデックスバ...
+確保したバッファにデータを送り込む。
&shiftnote(nohr);
**実際のコード [#c4cde96e]
#code(c){{
/* 頂点データのフォーマット */
struct d3dvtx_s {
D3DXVECTOR3 pnt; // 位置
D3DCOLOR clr; // 色
D3DXVECTOR2 tx1; // テクスチャ
};
/* 上の頂点フォーマットをフラグで表現する */
const int FVFVTX1_X = (D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DF...
/* 動的に確保する配列 */
d3dvtx_s* VtxSet; // 頂点データ
unsigned short* VtxIdxSet; // 頂点インデックスデータ
LPDIRECT3DVERTEXBUFFER9 lpVtxBuf; // 頂点バッファ
LPDIRECT3DINDEXBUFFER9 lpIdxBuf; // 頂点インデックスバッ...
/***** ここから実際のコード *****/
/* ここでlpD3DdevはLPDIRECT3DDEVICE9型で定義された有効な...
// 必要な数だけ頂点用の配列を確保する
VtxSet = new d3dvtx_s[9];
// 頂点のセット
SetVertex(0, 0.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(1, 1.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(2, 2.0f, 0.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(3, 0.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(4, 1.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(5, 2.0f, 1.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(6, 0.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(7, 1.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
SetVertex(8, 2.0f, 2.0f, 0.0f, 0xFF00, 0.0f, 0.0f);
// 頂点バッファに確保するサイズの計算
size_t wsz = 9 * sizeof(d3dvtx_s);
// 頂点バッファの確保
lpD3Ddev->CreateVertexBuffer(wsz, 0, FVFVTX1_X, D3DPOOL_...
// 確保する頂点バッファを宣言
d3dvtx_s* vbuf;
// ロック
lpVtxBuf->Lock(0, 0, reinterpret_cast<void**>(&vbuf), D3...
// データの転送
memcpy(vbuf, VtxSet, wsz);
// 解放
lpVtxBuf->Unlock();
// 頂点インデックスの確保(ここでは頂点1, 3, 7を使って三...
VtxIdxSet = new unsigned short[3];
VtxIdxSet[0] = 1;
VtxIdxSet[1] = 3;
VtxIdxSet[2] = 7;
// 頂点インデックスバッファを確保するサイズ
size_t isz = 3 * sizeof(unsigned short);
// 頂点インデックスバッファの確保(2バイト整数のバッファ...
lpD3Ddev->CreateIndexBuffer(isz, 0, D3DFMT_INDEX16, D3DP...
// 確保する頂点インデックスバッファを宣言
unsigned short* ibuf;
// ロック
lpIdxBuf->Lock(0, 0, reinterpret_cast<void**>(&ibuf), D3...
// 転送
memcpy(ibuf, VtxIdxSet, isz);
// 解放
lpIdxBuf->Unlock();
// デバイスにインデックスをセット
lpD3Ddev->SetIndices(lpIdxBuf);
}}
なお、頂点セット用の関数SetVertexは以下の様に定義されてい...
あとここでは範囲チェックを省略していますが、実際にはidがV...
#code(c){{
void SetVertex(int id, float x, float y, float z, D3DCOLO...
(VtxSet + id)->pnt.x = x;
(VtxSet + id)->pnt.y = y;
(VtxSet + id)->pnt.z = z;
(VtxSet + id)->clr = c;
(VtxSet + id)->tx1.x = u;
(VtxSet + id)->tx1.y = v;
}
}}
なお、頂点データの表示に関しては[[DrawIndexedPrimitiveに...
//これより下は編集しないでください
#pageinfo([[:Category/DirectX]],2006-08-05 (土) 00:04:59,...
ページ名:
▲
▼
[
トップ
] [
新規
|
子ページ作成
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]