1
我正在使用tmx-parser解析地图(http://code.google.com)后获取在Tiled(http://mapeditor.org)中创建的地图进行渲染的.com/p/TMX-解析器/)。我已经在正确的位置呈现瓷砖,但我似乎无法让它从瓷砖组中呈现正确的瓷砖。我使用来自平铺的isometric_grass_and_water示例来测试它。使用tmx解析器和SDL进行2d图块渲染
这是我的渲染代码。
void Map::RenderMapIsometric(SDL_Surface *SurfaceDest)
{
for (int i = 0; i < map->GetNumLayers(); ++i)
{
// Get a layer.
this->layer = map->GetLayer(i);
for (int x = 0; x < layer->GetWidth(); ++x)
{
for (int y = 0; y < layer->GetHeight(); ++y)
{
int CurTile = layer->GetTileGid(x, y);
if(CurTile == 0)
{
continue;
}
int tileset_col = (CurTile % (TilesetWidth/this->tileset->GetTileWidth()));
int tileset_row = (CurTile/(TilesetWidth/this->tileset->GetTileWidth()));
std::cout << CurTile << std::endl;
SDL_Rect rect_CurTile;
rect_CurTile.x = (this->tileset->GetMargin() + (this->tileset->GetTileWidth() + this->tileset->GetSpacing()) * tileset_col);
rect_CurTile.y = (this->tileset->GetMargin() + (this->tileset->GetTileHeight() + this->tileset->GetSpacing()) * tileset_row);
rect_CurTile.w = this->tileset->GetTileWidth();
rect_CurTile.h = this->tileset->GetTileHeight();
int DrawX = (x * this->tileset->GetTileWidth()/2) + (y * this->tileset->GetTileWidth()/2);
int DrawY = (y * this->tileset->GetTileHeight()/2) - (x * this->tileset->GetTileHeight()/2);
apply_surfaceClip(DrawX, DrawY, surf_Tileset, SurfaceDest, &rect_CurTile);
}
}
}
}
任何人都可以指出我做错了什么?