Я использую метод 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();
}