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 - Despay

Pages: [1]
1
Graphique / Re : Petite question sur le vertexarray
« le: Avril 18, 2015, 05:43:33 pm »
D'accord, merci de ta réponse Laurent   :D

2
Graphique / [Résolu] Petite question sur le vertexarray
« le: Avril 18, 2015, 04:20:53 pm »
Bonjour,

j'aurais une petite question sur les vertexarray, quand faut-t-il les utiliser concrètement ?
Dans l'exemple du tutoriel SFML il s'agit d'afficher un grand nombre de tiles pour éviter de faire un grand nombre de draw().

Seulement voila, dans mon futur jeu j'aimerais faire des niveaux assez grands tant en largeur qu'en longueur (style volgarr the viking), du coup jusqu'à présent je faisais des test avec ma camera, du style "si le plateforme est dans la camera on la dessine", je me retrouve a dessiner quelques sprites seulement.

Mais serait ce plus rentable de faire un vertexarray contenant toutes les plateformes sur un niveau potentiellement très grand et ne faire qu'un seul draw() ?
Ou alors devrais-je carrément garder mon fonctionnement actuel et recalculer mon vertexarray a chaque frame, seulement est-ce raisonnable ?

Merci a vous.

3
Du coup je pense que la meilleure solution est l'archive. Je souhaite un minimum de protection du fait que j'ai pour projet de faire un jeu multijoueur, j'aimerais éviter que les utilisateurs bidouilleur mettent les mains ou il ne faut pas :P.

Merci de vos réponses !

4
Bonjour,

tout est dans le titre, je cherche un moyen efficace de 'cacher/protéger' les ressources de mon jeu tel que les sprites, map, et peut être de futurs scripts.

Merci a vous.

5
C'était effectivement ce qui posait problème, merci beaucoup !

Des bisous.  ;D

6
Eh bien mon placement de camera consiste simplement a centrer la camera sur mon personnage (le truc tout gris tout moche sur les screen) a chaque frame avant de dessiner les sprites.
Cela fonctionnait avant que je mette en place ma RenderTexture.
void Camera::rafraichirPositionCamera(RenderWindow *  app)
{
    setCenter(cible->getPosX(),cible->getPosY());
    app->setView(*this);
}
 

7
Merci de ton aide, j'apprécie beaucoup.

J'ai modifié mon code comme tu me l'as conseillé, et c'est surement bien plus rentable comme ça  ;D.

Cependant j'ai toujours le problème de la camera qui ne filme pas au bon endroit.
http://www.noelshack.com/2015-11-1426076692-camera.png

void Camera::dessinerSpriteVisible(Map* map, RenderWindow * app)
{
    Sprite sprite;
    renderTexture.clear(sf::Color::Red);
    renderTexture.setView(*this);


    vector<Platforme*> * platformes = map->getPlatformes();
    //on dessine les platformes
    for(unsigned int i = 0 ; i < platformes->size() ; i++)
    {
       if(isVisible((*platformes)[i]))
       {
           renderTexture.draw( *((*platformes)[i]) );
       }

    }

    vector<Personnage*> * personnages = map->getPersonnages();
    //on dessine les perso
    for(unsigned int i = 0 ; i < personnages->size() ; i++)
    {
        if(isVisible((*personnages)[i]))
       {
            renderTexture.draw( *((*personnages)[i]) );
       }
    }

    vector<Decor*> * decors = map->getDecors();
     for(unsigned int i = 0 ; i < decors->size() ; i++)
    {
        if(isVisible((*decors)[i]))
       {
            renderTexture.draw( *((*decors)[i]) );
       }
    }
    renderTexture.display();
    sprite.setTexture(renderTexture.getTexture());
    app->draw(sprite);


}
 

La camera semble etre centrée sur le 0,0 de la renderTexture, je pourrais peut etre deplacer le sprite.setTexture(renderTexture.getTexture()); de facon a ce que cela soit centré mais n'est ce pas un peu sale ?
D'autre part, j'ai remarqué que la render texture ne se 'deplacait' pas a la même vitesse que mon personnage,
http://www.noelshack.com/2015-11-1426077001-camera2.png
par rapport au screen plus haut ou le personnage est visible, et on voit la totalité de la renderTexture en largeur et http://www.noelshack.com/2015-11-1426077185-camera3.png

8
Bonjour,

voila j'ai un petit problème avec ma vue avec l'utilisation d'une RenderTexture.
Dans mon code, je possède un objet Camera qui hérite de View et qui s'occupe de se placer correctement par rapport a mon personnage et de dessiner les sprites censés être dans la scène. Au début je n'utilisais pas de RenderTexture mais ayant pour projet d'utiliser des shaders sur toute ma scene, j'ai changé mon code.

Mon problème est que ma RenderTexture ne se dessine pas la ou il faut, voici 2 images sans/avec utilisation de la RenderTexture :
http://www.noelshack.com/2015-11-1426025436-sans-rendertexture.png
http://www.noelshack.com/2015-11-1426025429-avec-rendertexture.png

Voici le code que j'utilise :
void Camera::dessinerSpriteVisible(Map* map, RenderWindow * app)
{
    Sprite sprite;
    sf::RenderTexture renderTexture;
    if (!renderTexture.create(1920, 1080)){
        cerr << "Erreur initialisation render"<<endl;
        return;
    }
    renderTexture.clear(sf::Color::Red);
   // renderTexture.setView(*this);


    vector<Platforme*> * platformes = map->getPlatformes();
    //on dessine les platformes
    for(unsigned int i = 0 ; i < platformes->size() ; i++)
    {
       if(isVisible((*platformes)[i]))
       {
           renderTexture.draw( *((*platformes)[i]) );
            sprite.setTexture(renderTexture.getTexture());
            renderTexture.display();
            app->draw(sprite);
       }

    }

    vector<Personnage*> * personnages = map->getPersonnages();
    //on dessine les perso
    for(unsigned int i = 0 ; i < personnages->size() ; i++)
    {
        if(isVisible((*personnages)[i]))
       {
            renderTexture.draw( *((*personnages)[i]) );
            sprite.setTexture(renderTexture.getTexture());
            renderTexture.display();
            app->draw(sprite);

       }
    }

    vector<Decor*> * decors = map->getDecors();
     for(unsigned int i = 0 ; i < decors->size() ; i++)
    {
        if(isVisible((*decors)[i]))
       {
            renderTexture.draw( *((*decors)[i]) );
            sprite.setTexture(renderTexture.getTexture());
            renderTexture.display();
            app->draw(sprite);
       }
    }

   // app->setView(renderTexture.getView());

}
 

J'ai essayé de jouer avec 'renderTexture.setView(app->getView())' puis 'app->setView(renderTexture.getView());' mais rien n'y fait, cela ne fonctionne pas correctement  :-\

Quelqu'un pourrait t-il m'expliquer ce que je fais de mal ?

Merci de votre aide !

Pages: [1]