Forum de la communauté SFML

Aide => Graphique => Discussion démarrée par: thi121 le Novembre 28, 2013, 06:38:42 pm

Titre: [Résolu] Problème avec VertexArray affichage de textures différentes
Posté par: thi121 le Novembre 28, 2013, 06:38:42 pm
Bonjour à tous,

Comme l'indique le titre j'ai un problème avec un VertexArray que j'essaie de créer. Mon but est de créer un background en scrolling horizontale, mais il est tellement grand en dessin que je suis obligé de le découper en plusieurs parties. Pour ça j'ai créer un VertexArray mes les différents Quads que je crée se déforme sauf le dernier crée. Je n'arrive vraiment pas à trouver de solution à mon problème merci de m'aider.

Voici un bout de code :
Bonjour à tous,

Comme l'indique le titre j'ai un problème avec un VertexArray que j'essaie de créer. Mon but est de créer un background en scrolling horizontale, mais il est tellement grand en dessin que je suis obligé de le découper en plusieurs parties. Pour ça j'ai créer un VertexArray mes les différents Quads que je créer se déforme sauf le dernier crée. Je n'arrive vraiment pas à trouver de solution à mon problème merci de m'aider.

Voici un bout de code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
       
#include "TileMap.h"
 
using namespace sf;
using namespace std;
 
bool TileMap::load(vector<Texture>* text, const int* posY,int siz)
{
    t=text;
    int taill=0;
    m_vertices.setPrimitiveType(Quads);
    m_vertices.resize(siz*4);
 
    for (unsigned int i = 0; i < text->size(); ++i)
    {
        Vertex* quad = &m_vertices[i];
 
        quad[0].position = Vector2f(taill, posY[i]);
        quad[1].position = Vector2f(taill+t->at(i).getSize().x, posY[i]);
        quad[2].position = Vector2f(taill+t->at(i).getSize().x, posY[i]+t->at(i).getSize().y);
        quad[3].position = Vector2f(taill, posY[i]+t->at(i).getSize().y);
        taill+=text->at(i).getSize().x;
 
        quad[0].texCoords = Vector2f(0,0);
        quad[1].texCoords = Vector2f(text->at(i).getSize().x, 0);
        quad[2].texCoords = Vector2f(text->at(i).getSize().x, text->at(i).getSize().y);
        quad[3].texCoords = Vector2f(0, text->at(i).getSize().y);
    }
 
    return true;
}
 
void TileMap::draw(RenderTarget& target, RenderStates states) const
{
        states.transform *= getTransform();
 
        for (unsigned int i = 0; i < t->size(); ++i)
        {
            states.texture = &t->at(i);
            target.draw(&m_vertices[i], m_vertices.getVertexCount(),m_vertices.getPrimitiveType(), states);
        }
}
Titre: Re : Problème avec VertexArray affichage de textures différentes
Posté par: thi121 le Novembre 28, 2013, 08:27:07 pm
Trouvé tout seul merci