Welcome, Guest. Please login or register. Did you miss your activation email?

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - oxez

Pages: [1]
1
Graphics / Small issue with VertexArray based Tilemap
« on: June 15, 2013, 05:59:07 pm »
Hello,

I have a small issue with drawing my tilemap with VertexArray. The map itself draws fine, until I resize my window, then this happens

I don't know where the red line comes from. My texture (.gif file) has a red background, so that explains the color, but I can't tell why the line would display when I resize the window..

My sprites are 8x8, and the tiles on the screen are 32x32, if that's relevant information to the problem

My code is similar to the tilemap example from the website's tutorial

Here's my code that draws the vertices:

for (unsigned int i = 0; i < dimensions.x; ++i) {
        for (unsigned int j = 0; j < dimensions.y; ++j) {
                Tile *tile = &(tiles[i + j * dimensions.x]);

                sf::Vertex *quad = &vertices[(i + j * dimensions.x) * 4];

                quad[0].position = sf::Vector2f(i * block_size, j * block_size);
                quad[1].position = sf::Vector2f((i + 1) * block_size, j * block_size);
                quad[2].position = sf::Vector2f((i+1) * block_size, (j+1) * block_size);
                quad[3].position = sf::Vector2f(i * block_size, (j+1) * block_size);

               
                sf::FloatRect textureRect = sf::FloatRect(tile->getTileType().getTextureRect());
                quad[0].texCoords = sf::Vector2f(textureRect.left, textureRect.top);
                quad[1].texCoords = sf::Vector2f(textureRect.left + textureRect.width, textureRect.top);
                quad[2].texCoords = sf::Vector2f(textureRect.left + textureRect.width, textureRect.top + textureRect.height);
                quad[3].texCoords = sf::Vector2f(textureRect.left, textureRect.top + textureRect.height);
        }
}

And my draw method:

void Map::draw(sf::RenderTarget &target, sf::RenderStates states) const {
        // Draw the stuff.
        states.transform *= getTransform();
        states.texture = &currentTexture;
        target.draw(vertices, states);
}

Thanks, hopefully we can resolve this mistery!

Pages: [1]
anything