• Advertisement
Sign in to follow this  

Building an image from a TMX map

This topic is 2059 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Im trying to display a TMX map image using OpenGL. I have the tile numbers for each tile in a 2D array and trying to draw the map image to an SDL_Surface* which i then convert into an OpenGL texture to render. I don't get any errors when building the image but when I draw it its just black (its not the convertion function, i use it to create several other portions of the game). The map is 60 tiles wide, tiles are 32x32 and the tilesheet is 512x512.

[left][background=rgb(250, 251, 252)]Can anyone tell me what I'm doing wrong?[/background][/left]


The build image code:
[CODE]
void Map::buildImage(void)
{
std::cout << "Building Map Image...\n";

SDL_Surface* mapImg = SDL_CreateRGBSurface(SDL_SWSURFACE, 60 * 32, 60 * 32, 32, 0x00ff0000, 0x0000ff00, 0x000000ff, 0xff000000); // Map Image Surface
std::string tilesetfile = "Levels/" + tilesets[0]->filename;
SDL_Surface* tileImg = IMG_Load(tilesetfile.c_str()); // Load TileSet
SDL_Rect tileRect; // TileSet Crop Rect
SDL_Rect mapRect; // Map Destination Rect

std::cout << "\tBuilding Image...\n";

/* Build Map Image */
for(int row = 0; row < 60; row++) // Rows
{
for(int col = 0; col < 60; col++) // Columns
{
int id = mapData[row][col]; // Tile ID To Put On Map
int tileCol;
int tileRow;
id--; // So Tile 1 in array is 0 on TileSheet

tileCol = (id % 16); // Get TileSheet Column Position
tileRow = id / 16; // Get TileSheet Row Position
tileRect.x = 32 * tileCol;
tileRect.y = 32 * tileRow;
tileRect.w = 32;
tileRect.h = 32;

mapRect.x = col * 32;
mapRect.y = row * 32;
mapRect.w = 32;
mapRect.h = 32;

if(SDL_BlitSurface(tileImg, &tileRect, mapImg, &mapRect) != 0)
{
std::cout << "Failed To Blit Map: " << SDL_GetError() << '\n';
}
}
}

image = graphics.convert(mapImg); // Convrt SDL_Surface* to GLuint
std::cout << "Map Image Built!\n";
}
[/CODE]

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement