0
頂点から頂点バッファを作成する必要があります。 MSDNのThis tutorialはすばらしいです。頂点からの頂点バッファ
しかし、これはDirectX10 +に適しています。私はDirectX9を使用しています。同じことをここで果たす方法は?
ありがとうございました。
頂点から頂点バッファを作成する必要があります。 MSDNのThis tutorialはすばらしいです。頂点からの頂点バッファ
しかし、これはDirectX10 +に適しています。私はDirectX9を使用しています。同じことをここで果たす方法は?
ありがとうございました。
//Definitions
LPDIRECT3DVERTEXBUFFER9 v_buffer = NULL;
struct SimpleVertexCombined{
D3DXVECTOR3 Pos;
SimpleVertexCombined(FLOAT X, FLOAT Y, FLOAT Z):Pos(X, Y, Z){}
};
d3ddev->CreateVertexBuffer(8*sizeof(SimpleVertexCombined),
0,
0,
D3DPOOL_MANAGED,
&v_buffer,
NULL);
SimpleVertexCombined* cube = 0;
v_buffer->Lock(0, 0, (void**)&cube, 0);
cube[0] = SimpleVertexCombined(-1.0f, -1.0f, -1.0f);
cube[1] = SimpleVertexCombined(-1.0f, 1.0f, -1.0f);
cube[2] = SimpleVertexCombined(1.0f, 1.0f, -1.0f);
cube[3] = SimpleVertexCombined(1.0f, -1.0f, -1.0f);
cube[4] = SimpleVertexCombined(-1.0f, -1.0f, 1.0f);
cube[5] = SimpleVertexCombined(-1.0f, 1.0f, 1.0f);
cube[6] = SimpleVertexCombined(1.0f, 1.0f, 1.0f);
cube[7] = SimpleVertexCombined(1.0f, -1.0f, 1.0f);
v_buffer->Unlock();
私は、最初の値は、その大きさは、あなたがより多くの頂点を追加している場合は、その数を変更することを忘れないでまず、CreateVertexBuffer()を使用してv_bufferを作成し、これは動作するはずだと思うし、我々は、ポインタキューブを使用しますバッファにデータを転送します。あなたは色をしたい場合は、あなたがする必要がある、
SimpleVertexCombined verticesCombo[] = {
D3DXVECTOR3(0.0f, 0.5f, 0.5f),
D3DXVECTOR3(0.0f, 0.0f, 0.5f),
D3DXVECTOR3(0.5f, -0.5f, 0.5f),
D3DXVECTOR3(0.5f, 0.0f, 0.0f),
D3DXVECTOR3(-0.5f, -0.5f, 0.5f),
D3DXVECTOR3(0.0f, 0.5f, 0.0f),
};
VOID* pVoid;
v_buffer->Lock(0, 0, (void**)&cube, 0);
memcpy(pVoid, verticesCombo, sizeof(verticesCombo));
v_buffer->Unlock();
このすべては、色なしで行われます。また、あなたは、このような既存のアレイからデータを転送したい場合は、ロックの間)(memcpyをを使用してロックを解除することができますD3DVERTEXELEMENT9とその宣言を作成しなければならない場合にも、コンストラクタに追加します。