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

Pages: [1] 2 3 Suivante »
1
Graphique / Re : Dessiner un diaphragme
« le: Septembre 18, 2014, 12:47:56 am »
T'as l'air d'avoir du mal avec le principe, alors je te donne un code.
Par contre c'est pas du machage de travail en bonne-et-due forme, faudra que tu change certain trucs, mais t'as le code pour le principe au moins, tu peux pas dire que t'y arrives pas.

(Admettons que ta fenêtre fasse 800x600)

sf::RenderTexture diaphragme;
sf::CircleShape cercle(1000);
sf::Sprite diaph_sprite;

diaphragme.create(800, 600);
diaphragme.clear(sf::Color::Black);

cercle.setOutlineThickness(0);
cercle.setFillColor(sf::Color::White);

diaph_sprite.setTexture(diaphragme.getTexture());

// En supposant que ton programme s'arrête quand l'écran devient totalement noir
while(cercle.getRadius() > 1)
{
        diaphragme.clear(sf::Color::Black);
        diaphragme.draw(cercle);
        diaphragme.display();

        cercle.scale(0.99);// Le cercle de visibilité qui rétrécie de plus en plus

        window.clear();

        /*
                Affichage de ton monde
        */


        window.draw(diaph_sprite, sf::BlendMultiply);// Affichage du diaphragme
        window.display();
}

2
Général / Re : Erreur insensée
« le: Septembre 18, 2014, 12:33:26 am »
T'as bien linké la SFML dans les paramètres de ton projet ? T'es sur quel OS ? Quel IDE ?

P.S. : Les variables globales, c'est pas toujours le diable, mais l'utilisation que tu en fais ici, c'est pire que l'enfer. Si jamais tu voudras maintenir correctement ton prog, ou le faire évoluer, ou faire quoi que ce soit de propre, tu vas brûler dans les flammes de l'enfer, accueilli par un Stroustrup et un Turing à trois têtes très en colère, qui vont uriner du sang sur toutes les bécanes Unix de la planète. Ce sera la fin de tout, la fin d'un monde. Kanye West perdra de son génie, et les bites-au-nez de poisson de leur saveur.

3
Fenêtrage / Re : [SFML 2.1] Position de la souris en retard?
« le: Septembre 13, 2014, 05:23:04 pm »
C'est possible. Au pire, au lieu de passer par les event, tu stockes la position précédente de la souris, et si la position en cours est différente, tu calcules la différence, le vecteur machin, et tu fais la même chose... :)

4
Il y a peut-être une solution, mais par contre je suis désolé, j'ai pas le temps de te donner un code.
Je t'explique :
- Tu replaces à chaque tour de boucle ton curseur au centre de ta fenêtre.
- Dès que tu récupères un event correspondant à un mouvement de souris, tu calcules le vecteur, la distance, enfin un truc comme ça, je pense que tu vas comprendre, entre la nouvelle position et le centre de la fenêtre.
- Tu déplaces ton sprite selon ce vecteur.

(En gros ton sprite ne suit plus directement le curseur, il ne fait que respecter son mouvement)

Ça devrait améliorer tout ça :)

5
Fenêtrage / Re : [SFML 2.1] Position de la souris en retard?
« le: Septembre 13, 2014, 02:41:24 pm »
J'ai vérifié sur Windows, il y a aussi un décalage, mais très léger, c'est peut-être du à un changement de contexte pour la récupération de la position de la souris via l'OS, entre l'enregistrement des coordonnées, l'effaçage de la fenêtre, et l'affichage du sprite... Quoiqu'il-en-soit, je pense pas que tu puisses y remédier, sauf si Laurent n'est pas de mon avis, et si le décalage n'est que de quelques pixels, ça sera pas trop gênant, généralement quand on clique c'est pas à la volée :)

6
Fenêtrage / Re : [SFML 2.1] Position de la souris en retard?
« le: Septembre 13, 2014, 12:51:13 pm »
Essaie ça :

sf::Vector2i mouse_pos;

// on fait tourner le programme tant que la fenêtre n'a pas été fermée
while (window.isOpen())
{
        // on traite tous les évènements de la fenêtre qui ont été générés depuis la dernière itération de la boucle
        sf::Event event;
        while (window.pollEvent(event))
        {
                // fermeture de la fenêtre lorsque l'utilisateur le souhaite
                if (event.type == sf::Event::Closed)
                        window.close();
        }

        // effacement de la fenêtre en noir
        window.clear(sf::Color::Black);

        // C'est peut-être mieux de prendre la pos de la souris après le clear
        mouse_pos = sf::Mouse::getPosition(window);
       
        // ça je suis pas sur, mais ça permettrait de placer le curseur de l'OS sur ta pos enregistrée :
        sf::Mouse::setPosition(mouse_pos);

        m_mouse_sprite.setPosition(mouse_pos.x, mouse_pos.y);
        window.draw(m_mouse_sprite);

        // fin de la frame courante, affichage de tout ce qu'on a dessiné
        window.display();
}
 

7
Fenêtrage / Re : [SFML 2.1] Position de la souris en retard?
« le: Septembre 11, 2014, 10:30:41 am »
Minuscule amélioration :
Au lieu d'appeler la fonction getPosition de la souris deux fois, pour x et pour y, crée une variable avant ta boucle et remplie-la à chaque tour. Ensuite, tu envoies les composantes x et y de cette variable au setPosition de ton image. Comme ça tu calcule une bonne fois pour toute les coordonnées, au lieu de le faire deux fois.

8
Général / Re : Recherche de technique sur les affichages
« le: Septembre 07, 2014, 03:20:57 pm »
C'est vrai que quand on parle d'un grand nombre de sprites, c'est plus genre en milliers voire en dizaines de milliers, minimum ! :P Même la Gameboy ramerai pas un pèt' avec 20 sprites !

9
Graphique / Re : Calques de lumières
« le: Août 20, 2014, 01:17:42 pm »
J'ai enfin trouvé ! :D
Voila ce que je fais (Je sais pas si c'est très optimisé, mais bon) :
Pour chaque calque, je dessine ses entités.
En même temps, je dessine dans la RenderTexture des lumières, via un shader, leur silhouette (Remplie de la couleur ambiante, pour "effacer" ce qui se trouve en dessous).
Puis je dessine, toujours dans la RenderTexture, les lumières du calque.
Une fois tous les calques traités, je dessine en BlendMultiply la RenderTexture des lumières, et Paf! ça fait ce que je veux !
(Je tiens à remercier les éclairs de réflexion nocturnes ! :P

10
Peux-tu montrer ton code ?
As-tu inclus les en-têtes SFML ?

11
Général / Re : Mélange sfml - Qt, Possible ou pas ?
« le: Août 18, 2014, 01:38:51 pm »
xD Ayant relu le contrat délivré par la SACEM à l'égard de la blague du P.S., j'ai pris note de certains points qui me paraissaient obscurs, et j'ai édité en conséquence le post concerné. Je n'ai bien heureusement reçu aucune amende, préférant de loin le gout des noix.

P.S. : Comme le dit Laurent, en effet il y a une classe toute faite pour ta demande sur le wiki. :)

12
Graphique / Re : Calques de lumières
« le: Août 17, 2014, 08:26:16 pm »
Pour le coup des 1000 calques, c'est exagéré, mais c'est pour dire qu'on peut avoir un nombre de calques indéterminé. Imaginons par exemple qu'on a :

Un personnage, au sol.
Par dessus, un lampadaire (Avec sa lumière, en partie masquée par le support de l'ampoule).
Par dessus, un hélicoptère.
Sur les pales de l'hélicoptère, une LED.

Vous voyez que dans cette situation, on a plusieurs calques de lumières, dont certains ont des lumières en partie cachées par d'autres entités, mais on peut très bien avoir d'autres situations avec plus ou moins de superpositions...

Merci quand même pour les réponses rapides ! :)

13
Graphique / Re : Calques de lumières
« le: Août 17, 2014, 01:01:17 am »
Non justement :/ Parce que je peux avoir des choses plus complexes, par exemple (On va viser très loin) :
J'ai 10000 calques, et à chaque niveau, je peux avoir des lumières, genre :
Calque 0
Lumiere
Calque 1
Lumiere
Calque 2
Lumiere
Calque 3
Calque 4
Lumiere
[...]

Du coup là je n'ai pas juste un seul affichage des lumières de la scène...
J'avais pensé à utiliser une RenderTexture remplie de la couleur ambiante, et à chaque fois, je dessine en BlendAdd les lumières d'un calque, puis pour les entités des calques supérieurs, je dessine la silhouette de chaque entité en blanc sur la RenderTexture pour "couper" les lumières qui doivent se situer en-dessous, etc... Mais le truc c'est que si je dessine une silhouette en blanc sur la RenderTexture, et bah si je dois dessiner une lumière par dessus en BlendAdd, et bah la partie de celle-ci qui sera au dessus de la silhouette blanche sera invisible...

À moins qu'il y ai une autre méthode, pour l'instant je vois pas d'autre solution...

14
Graphique / Re : Calques de lumières
« le: Août 16, 2014, 10:56:41 pm »
D'accord, pour ça je suis d'accord, mais comment faire pour par gérer le fait, lors du dessin, que des entités peuvent être dessinées par-dessus des lumières, et d'autres dessous ? (Y'a des histoires de masking je crois mais je vois pas trop...) :)

15
Graphique / Calques de lumières
« le: Août 14, 2014, 11:04:48 pm »
Saaaaalut à tous ! :D
Alors voilà, je bosse sur un moteur de jeu. En parallèle du développement de la partie Logique du moteur, je planche sur un système de lumières. Dans mes scènes (Ensemble de Noeuds de Scène), j'ai plusieurs calques, identifiés par leur hauteur (Idem z-index en CSS). Dans chaque calques, il peut y avoir des lumières. Ainsi, dans le processus d'affichage d'un calque, on dessine toutes les entités, et à la fin de l'affichage du-dit calque, on affiche les lumières, puis on passe au calque suivant. Or, j'ai essayé un truc inspiré de l'article de developpez.net (Moteur de lumières 2D avec SFML), c'est-à-dire :

J'ai une RenderTexture que je remplie de la couleur d'ambiance, puis je dessine chaque lumière en sf::BlendAdd dessus, puis je dessine la texture final en sf::BlendMultiply par dessus la scène.

Pour mon système de calques, j'avais essayé cet algo :

Pour chaque calque,
      Remplissage de la RenderTexture par la couleur ambiante.
      Pour chaque entité du calque,
            Si ce n'est pas une lumière, on l'affiche.
            Sinon, on ajoute la lumière en sf::BlendAdd dans la RenderTexture.
      Fin de l'affichage des entités du calque.
      Dessin de la RenderTexture des lumières en sf::BlendMultiply.
Fin de l'affichage du calque.

Le souci, c'est que vu qu'à chaque fois je dessine en multipliant, la RenderTexture des lumières, et bah la couleur ambiante se superpose et s'assombrie à mort...

Du coup, quelqu'un aurait-il une solution ? Peut-être avec des shaders, je sais pas trop... Merci d'avance !!! :)

P.S. : Ce forum c'est trop de la bombe !
P.S. 2 : Il n'y aura pas d'autre P.S. !
P.S. 3 : Ah si en fait...


Par décision de justice, il a été imposé à l'auteur de ce post d'exposer ses connaissances juridiques en matière de droits d'auteur. Vous me copierez cent fois :
(click to show/hide)

Pages: [1] 2 3 Suivante »