Я использую метод D3DXSPRITE, чтобы рисовать плитки карты на экране, я просто добавил функцию масштабирования, которая увеличивает масштаб, когда вы удерживаете стрелку вверх, но заметил, что теперь вы можете видеть промежутки между плитками, вот некоторые снимки экрана
нормальный размер (32x32) на плитку
![enter image description here](https://i.stack.imgur.com/ncWrn.png)
увеличено (вы можете видеть белые промежутки между плитками)
![enter image description here](https://i.stack.imgur.com/yx1nY.png)
уменьшено (даже хуже!)
![enter image description here](https://i.stack.imgur.com/kpeiB.png)
Вот фрагмент кода, с которым я перевожу и масштабирую мир.
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();
}