Jump to content

  • Log In with Google      Sign In   
  • Create Account

Building an image from a TMX map


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 CAR145   Members   -  Reputation: 106

Like
0Likes
Like

Posted 30 May 2012 - 12:08 PM

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.

Can anyone tell me what I'm doing wrong?



The build image 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";
}


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS