2010-11-26 26 views
0

頂点から頂点バッファを作成する必要があります。 MSDNのThis tutorialはすばらしいです。頂点からの頂点バッファ

しかし、これはDirectX10 +に適しています。私はDirectX9を使用しています。同じことをここで果たす方法は?

ありがとうございました。

答えて

0
//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とその宣言を作成しなければならない場合にも、コンストラクタに追加します。

関連する問題