0

私はこの構造体を持っています:

struct MxMInstanceData
{
    D3DXVECTOR2 mTransform;
    float mSpacing;
};

次に、MxMInstanceData のベクトルを作成します。

std::vector<MxMInstanceData> instInFrustumData;

電話instInFrustumData.clear()すると、次のエラーが表示されます。

アサーションが失敗しました (ベクトル反復子に互換性がありません)

ベクター作成コード:

instInFrustumData.reserve(mNumInstances);

ベクトル更新コード:

void Terrain::updateInstances()
{
    mNumInstancesInFrustum = 0;

    if(instInFrustumData.size() != 0)
        instInFrustumData.clear();

    mpMxMInstInFrustumB->Map(D3D10_MAP_WRITE_DISCARD, NULL, (void**) &instInFrustumData);

    for(int x = 0; x < mNumInstances; x++)
    {
        if(mpCamera->point2DInFrustum(instData[x].mTransform + 
            D3DXVECTOR2(instData[x].mSpacing/2 + mpCamera->getPosition().x, instData[x].mSpacing/2 + mpCamera->getPosition().z), instData[x].mSpacing/2)
            != OUTSIDE)
        {
            instInFrustumData.push_back(instData[x]);
            mNumInstancesInFrustum++;
        }
    }

    mpMxMInstInFrustumB->Unmap();
}

何がこれを実現させることができますか?

そして、クラスのデストラクタで clear() も呼び出します

4

2 に答える 2