【发布时间】:2011-05-28 16:16:18
【问题描述】:
我正在使用 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();
}
【问题讨论】:
-
如果改变背景颜色,线条是否会改变颜色?知道实际上排除了您的纹理或过滤没有发生任何事情可能会很有趣。
-
你确实需要使用着色器和 ID3DXEffect,而不是固定功能。
-
线条不会改变颜色,只是看起来是白色的,我试过清晰的红色、蓝色、黑色,看起来都一样。
-
我来看看 d3dxeffect