D3DXSPRITEメソッドを使用してマップタイルを画面に描画しています。上矢印を押したままにするとズームインするズーム機能を追加しましたが、タイル間のギャップが表示されるようになりました。これがいくつかのスクリーンショットです。
タイルあたりの通常サイズ(32x32)
ズームイン(タイル間に白い隙間が見える)
ズームアウト(最悪でも!)
これが、私が翻訳して世界をスケーリングするコードスニペットです。
D3DXMATRIX matScale, matPos;
D3DXMatrixScaling(&matScale, zoom_, zoom_, 0.0f);
D3DXMatrixTranslation(&matPos, xpos_, ypos_, 0.0f);
device_->SetTransform(D3DTS_WORLD, &(matPos * matScale));
そして、これは私の地図の描画です(タイルはタイルのベクトルのベクトルにあります..そして私はまだカリングをしていません)
LayerInfo *p_linfo = NULL;
RECT rect = {0};
D3DXVECTOR3 pos;
pos.x = 0.0f;
pos.y = 0.0f;
pos.z = 0.0f;
for (short y = 0;
y < BottomTile(); ++y)
{
for (short x = 0;
x < RightTile(); ++x)
{
for (int i = 0; i < TILE_LAYER_COUNT; ++i)
{
p_linfo = tile_grid_[y][x].Layer(i);
if (p_linfo->Visible())
{
p_linfo->GetTextureRect(&rect);
sprite_batch->Draw(
p_engine_->GetTexture(p_linfo->texture_id),
&rect, NULL, &pos, 0xFFFFFFFF);
}
}
pos.x += p_engine_->TileWidth();
}
pos.x = 0;
pos.y += p_engine_->TileHeight();
}