CAR145

Members
  • Content count

    1
  • Joined

  • Last visited

Community Reputation

106 Neutral

About CAR145

  • Rank
    Newbie
  1. 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]