Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - St4n0f

Pages: [1]
1
Graphique / Re : RenderTexture décalage de pixels
« le: Septembre 17, 2015, 09:18:33 pm »
Merci pour cette réponse rapide Laurent.

Effectivement la solution semble fonctionné. J'avais déjà testé cette solution mais la trouvant un peu "bidouilleuse". Mais effectivement en y pensant bien, ça semble être la réponse adéquate.

Bien ! C'est une épine du pied que tu m'enlèves là. Encore merci, problème résolu.

2
Graphique / RenderTexture décalage de pixels
« le: Septembre 17, 2015, 08:50:04 pm »
Bonsoir.
Je développe en ce moment un éditeur de niveau en utilisant Qt et SFML. Je me suis aperçu d'un soucis avec la SFML après avoir recompilé plusieurs fois la lib testé sur une autre machine et avoir vérifié mes drivers. Il semblerait avoir un soucis avec sf::RenderTexture. Je veux juste afficher une grille définit par: une largeur, une hauteur, la largeur d'une cellule, la hauteur d'une cellule. Mais RenderTexture ne souhaite pas faire ce que j'attends. Une image pour illustrer.


Grille: 320 x 320 (pixels)
Tiles: 32 x 32 (pixels)
Vert: La grille dessiné sur un renderTexture (Position: 0.f, 0.f);
Rouge: La grille dessiné via la fenêtre; (Afficher après sf::RenderTexture en traçant la grille depuis la position 0.f, 0.f).

Voilà un code fait à l'instant pour résumer le problème.
#include <iostream>
#include <SFML/Graphics.hpp>

int main()
{
        int grid_width = 320;
        int grid_height = 320;
        int tiles_width = 32;
        int tiles_height = 32;

    // Create GRID
    sf::RenderTexture gridRenderTexture;
    gridRenderTexture.create(grid_width, grid_height);
    gridRenderTexture.clear(sf::Color::Black);

    // Vertical
        for(int x=0; x<=grid_width/tiles_width; ++x)
        {
                sf::VertexArray line(sf::Lines, 2);
                line[0].position = sf::Vector2f(x*tiles_width, 0.f);
                line[0].color = sf::Color::Green;
                line[1].position = sf::Vector2f(x*tiles_width, grid_height);
                line[1].color = sf::Color::Green;
                gridRenderTexture.draw(line);
        }

        // Horizontal
        for(int y=0; y<=grid_height/tiles_height; ++y)
        {
                sf::VertexArray line(sf::Lines, 2);
                line[0].position = sf::Vector2f(0.f, y*tiles_height);
                line[0].color = sf::Color::Green;
                line[1].position = sf::Vector2f(grid_width, y*tiles_height);
                line[1].color = sf::Color::Green;

                gridRenderTexture.draw(line);
        }
        gridRenderTexture.display();

        sf::Texture tx(gridRenderTexture.getTexture());
        sf::Sprite grid;
        grid.setTexture(tx);

        // Create Window
        sf::RenderWindow window(sf::VideoMode(800, 600), "SFML window");
    while(window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                window.close();
        }

        window.clear(sf::Color::Blue);
        window.draw(grid);

                // Vertical
                for(int x=0; x<=grid_width/tiles_width; ++x)
                {
                        sf::VertexArray line(sf::Lines, 2);
                        line[0].position = sf::Vector2f(x*tiles_width, 0.f);
                        line[0].color = sf::Color::Red;
                        line[1].position = sf::Vector2f(x*tiles_width, grid_height);
                        line[1].color = sf::Color::Red;
                        window.draw(line);
                }

                // Horizontal
                for(int y=0; y<=grid_height/tiles_height; ++y)
                {
                        sf::VertexArray line(sf::Lines, 2);
                        line[0].position = sf::Vector2f(0.f, y*tiles_height);
                        line[0].color = sf::Color::Red;
                        line[1].position = sf::Vector2f(grid_width, y*tiles_height);
                        line[1].color = sf::Color::Red;

                        window.draw(line);
                }

        window.display();
    }

    return EXIT_SUCCESS;
}
 

Le problème se produit en aussi en variant la taille de la grille et des cellules.

Pages: [1]
anything