SFML community forums
Help => Graphics => Topic started by: Linux Vs God on July 31, 2011, 08:31:50 pm
-
How would i get rid of the black lines between each tile in my tilemap?
(http://img193.imageshack.us/img193/4706/snap3p.png)
#include <SFML/Graphics.hpp>
#include <SFML/System.hpp>
#include <iostream>
#include <vector>
int main()
{
std::vector< std::vector<int> > map(4, std::vector<int>(4));
// Define the map
map[0][0] = 0;
map[0][1] = 1;
map[0][2] = 0;
map[0][3] = 0;
map[1][0] = 0;
map[1][1] = 0;
map[1][2] = 0;
map[1][3] = 0;
map[2][0] = 0;
map[2][1] = 0;
map[2][2] = 0;
map[2][3] = 0;
map[3][0] = 0;
map[3][1] = 0;
map[3][2] = 0;
map[3][3] = 1;
// Create the main rendering window
sf::RenderWindow App(sf::VideoMode(640, 480, 32), "SFML TileMap");
// Load the sprite image from a file
std::vector<sf::Image> images(2);
if (!images[0].LoadFromFile("grass.png")) {
return EXIT_FAILURE;
}
if (!images[1].LoadFromFile("water.png")) {
return EXIT_FAILURE;
}
// Create the sprite
std::vector<sf::Sprite> tiles(2);
tiles[0] = sf::Sprite(images[0]); // Grass
tiles[1] = sf::Sprite(images[1]); // Water
// Start game loop
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
}
// Get elapsed time
float ElapsedTime = App.GetFrameTime();
// Clear screen
App.Clear();
for (int x = 0; x < map.size (); x++) {
for (int y = 0; y < map[x].size (); y++) {
int tileId = map[x][y];
// Get the tile's image
const sf::Image* image = tiles[tileId].GetImage();
// Get the width and height of the image
int width = image->GetWidth();
int height = image->GetHeight();
// Adjust the offset by using the width
tiles[tileId].SetPosition(x * width, y * height);
// Draw the tile
App.Draw(tiles[tileId]);
}
}
// Display window contents on screen
App.Display();
sf::Sleep(1.0f / 60.0f);
}
return EXIT_SUCCESS;
}
-
This question is asked so often... ;)
Try SetSmooth(false) on your sf::Image
-
That was a easy fix. Thank you