Nanashi-softプログラマ専用DirectX11開発


◇DirectX11プログラミング -インデックスバッファーを32bitにする-

現状のシステムでは,インデックス頂点データが 65536個までしか使用できません
pmd形式ファイルもそうだったので,特に問題はありませんでした

lwoフォーマットは,それ以上の頂点データも扱う事ができる為,問題が生じました
どこが原因なのかを調査したところ,インデックスバッファーの型に 16bitを使用していました

変更点は,main.cppのみです

・main.cpp
〜省略〜
//インデックスデータを取得
int INDEXSU = modeldata->face_vert_count;

unsigned long *hIndexData;
hIndexData = new unsigned long[INDEXSU];

for(int i=0; i < INDEXSU; i++){
hIndexData[i] = (unsigned long)modeldata->face_vert_index[i];
}
〜省略〜
//インデックスバッファ作成
hBufferDesc.ByteWidth = sizeof(unsigned long) * INDEXSU;
hBufferDesc.Usage = D3D11_USAGE_DEFAULT;
hBufferDesc.BindFlags = D3D11_BIND_INDEX_BUFFER;
hBufferDesc.CPUAccessFlags = 0;
hBufferDesc.MiscFlags = 0;
hBufferDesc.StructureByteStride = 0;
〜省略〜
//インデックスバッファー切り替え
hpDeviceContext->IASetIndexBuffer(hModelData->idxBuf[hModelData->getIdxBufNum(mdcnt)], DXGI_FORMAT_R32_UINT, 0);
これだけです
インデックスバッファーの unsigned shot部分を unsigned longにするだけです

これで,16777216コの頂点データが使えるようになりましたw


TOPプログラマ専用DirectX11開発