1

Windows のプロジェクトで、ビデオ カード メモリにビットマップを割り当てる必要があります。プロジェクトは GDI 以外の 2d ライブラリを使用しているため、CreateCompatibleBitmap は役に立ちません。

次に、DX を使用する方法を見つけます。これが私のコードです。

if(FAILED(g_D3DDevice->CreateVertexBuffer(10240 * 1024, 0,  
        D3DFVF_VERTEX, D3DPOOL_DEFAULT, &g_VertexBuffer,  
        NULL))) return false;  

    // Fill the vertex buffer.  
    void *ptr;  

    if(FAILED(g_VertexBuffer->Lock(0, 1024 * 10240,  
        (void**)&ptr, 0))) return false;  

    //do something...
    //printf("ptf = %x\n", ptr);
    //memcpy(ptr, objData, sizeof(objData));  
    g_VertexBuffer->Unlock();  

これまでのところうまくいきます。でも副作用はあるの?

4

2 に答える 2

2

副作用:

  • 書き込みまたは読み取りを行うたびに VertexBuffer のロックを解除する必要があります
  • 通常より遅いメモリ

この副作用とは別に、ビデオ カードのメモリ不足は、最も「ユーザーに明らかな」種類のエラーを提供しないため、このプロセスが成功したことを確認してください。

遅い理由については、ビデオカードのメモリに入れると、書き込み/読み取りを行うたびに頂点へのアクセスを要求する必要があり、通常のメモリで実際にすぐにアクセスするよりも遅くなります。

于 2013-05-29T12:52:34.053 に答える