IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Lenteurs moteur graphique


Sujet :

2D Java

  1. #1
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut Lenteurs moteur graphique
    Bien le bonjour à tous.

    J'ai commencer à faire un petit moteur graphique pour gérer la lumière dans un jeu 2D.
    Ce petit bout de code marche bien mais trop lentement.
    Surement que ma façon de le concevoir n'est pas la bonne.
    Voila comment il est fait:

    1- Je créé un objet World qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    protected static Graphics2D calqueLum;
    protected static BufferedImage bufferedCalqueLum;
    Puis je le lance avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void Start(){
    bufferedCalqueLum = new BufferedImage(Frame.frameWidth, Frame.frameHeight, BufferedImage.TYPE_INT_ARGB );
    calqueLum = bufferedCalqueLum.createGraphics();
    }
    2- Je créé un objet Light qui hérite de World.
    Avec sa méthode AddLight je dessine dans "calqueLum" un cercle avec des triangles dont la couleur opaque au centre devient translucide en s'évasant.

    3- Et pour finir, dans World.DisplayLight() j'inverse l'alpha de tout les pixels avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void DisplayLight(){
    	for(int x = 0, y = 0; x < bufferedCalqueLum.getWidth(); x++){ for(; y < bufferedCalqueLum.getHeight(); y++){
    			Color nuitColor = new Color(bufferedCalqueLum.getRGB(x, y), true);
    			Color rgba = new Color(nuitColor.getRed(), nuitColor.getGreen(), nuitColor.getBlue(), (255 - nuitColor.getAlpha()));
    	        	bufferedCalqueLum.setRGB(x, y, rgba.getRGB());
            } y = 0; }
     
    	Image imagecalqueLum = Toolkit.getDefaultToolkit().createImage(bufferedCalqueLum.getSource());
    	Panel.feuille.drawImage(imagecalqueLum, 0, 0, null);
     
    	calqueLum.dispose();
    }
    Sachant que bufferedCalqueLum.getHeight() vaut 1080 et que bufferedCalqueLum.getWidth() vaut 1920 sa fait beaucoup de pixels.
    Du coup il me faudrait surement une autre idée.

    Merci de votre aide.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    bon, déjà getPixel / setPixel ce n'est pas le plus performant pour modifier le contenu d'une image. Il vaut mieux accéder directement au tableau de int via les Raster, et ca nécessite que tu te perde un peu dans la javadoc

    ensuite, pourquoi tu t'emmerde à aller inverser la valeur de alpha? Pourquoi ne pas simplement changer ta formule de composition quand tu utilisera cette image? C'est bien plus performant de dire au composite de faire
    (srccolor * dstalpha) + (dstcolor * (1-dstalpha))
    plutôt que de lui dire de faire
    (srccolor * (1-dstalpha)) + (dstcolor * dstalpha) et en plus d'inverser manuellement l'alpha sur l'image dst.


    Selon moi donc, ton problème de base est que tu simplifie trop ton système (préparer tes données sources en les modifiant régulièrement) plutôt que de faire te reposer sur ce qui existe (formule de compositing) qui à complexifier tes données (ajout d'un flag pour savoir si oui ou non le alpha est inversé)

  3. #3
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Pour l'histoire de l'alpha, (si c'est bien ca que tu veux dire) je ne peut pas coller mon cercle sur un fond noir parce que je veux rendre le fond en question transparent, donc ca ne peut pas marcher a moins de créé une autre BufferedImage qui contient le ou les cercles et de comparer les pixels de chaque BufferedImage, ce qui prend encore plus de resources (A moins que tu ai une autre idée).

    Ensuite pour l'utilisation du Raster si tu peut m'aiguiller stp, parce que j'ai mis trois semaines a comprendre comment fonctionnes les BufferedImage...
    J'ai trouver ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BufferedImage image = myImage;//or whatever
    Raster ras=image.getData();
    DataBuffer data=ras.getDataBuffer();
    Et maintenant j'en fait quoi?
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par Pecose Voir le message
    Pour l'histoire de l'alpha, (si c'est bien ca que tu veux dire) je ne peut pas coller mon cercle sur un fond noir parce que je veux rendre le fond en question transparent, donc ca ne peut pas marcher a moins de créé une autre BufferedImage qui contient le ou les cercles et de comparer les pixels de chaque BufferedImage, ce qui prend encore plus de resources (A moins que tu ai une autre idée).
    Vu que je ne comprends pas ce que tu fais, je peux pas t'aider. Ma remarque était juste que, inverser l'alpha dans une image (ce que tu fais) et souvent inutile car il suffit d'inverser l'algo utilisant, plus tard, cet alpha.

    Citation Envoyé par Pecose Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    BufferedImage image = myImage;//or whatever
    Raster ras=image.getData();
    DataBuffer data=ras.getDataBuffer();
    Et maintenant j'en fait quoi?
    Tu typecast en ByteDataBuffer/IntegerDataBuffer/ autre suivant ce que t'as retourné le BufferedImage, mais vu que t'es parti sur un INT_ARGB, il y a des chances que ce soit du integer. Enfin, il y a des méthodes sur ces sous classes pour accéder au tableau de int formant l'image, qu'il suffit de modifier directement, si je ne dis pas de bêtise.

    Tu peux aussi utiliser getSamples / setSamples sur WritableRaster, mais je ne sais pas laquelle des deux méthodes est la plus rapide.

  5. #5
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Ca s'appelle DataBufferInt / DataBufferByte au cas ou tu cherche.
    Par contre j'ai rien trouver d'utile, mais si tu as un moyen moins lourd que le mien d'inverser l'alpha de mon image je suis preneur.
    Parce que j'ai strictement rien trouver sur l'algo d'on tu parle.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    ben c'est ton algo que j'aimerais voir. Là tu inverse le alpha sur une image, mais je suppose que tu fais quelque chose de cette image, à la fin

  7. #7
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Je l'affiche.
    En fait cette image c'est un calque que je colle par dessus les objets "tables, chaises, sols ect..." de mon jv.
    Dans un premier temps je dessine des rond de couleur "mes lumière" et ensuite j'inverse l'alpha de l'image.
    du coup tout les pixels vierges deviennent noir et les autre deviennent transparent.

    Et la lumière fut.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Dans ce cas là, l'idéal, ce serait de calculer la lumière directement dans le bon sens, plutot que de devoir recourir à une inversion par la suite.

    Sinon, tu peux essayer de jouer avec Graphics2D.setComposite et les différentes formule de Alphacompsite pour voir si une ne donne pas les résultats que tu veux.

  9. #9
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    J'ai tester AlphaComposite, et depuis hier, je tourne ça dans tout les sens.
    Il n'y a pas moyen de faire ce que je veux.
    Là je sèche.

    AlphaComposite permet de superposer des images en passent en alpha certaines parties de la source ou de la destination.
    Le problème c'est que j'ai besoin d'additionner les couleurs de mes lumières.
    Avec AlphaComposite quand j'en affiche une j'en efface une autre ou j'affiche par dessus.

    J'ai essayer d'afficher les lumières dans un BufferedImage (là l'addition ca marche), puis d'afficher ce BufferedImage sur le BufferedImage principal avec AlphaComposite.
    Sauf qu'un BufferedImage ca ne mesure pas que "les lumière" mais en l'occurrence tout l'écran.
    Du coup même si j'utilise AlphaComposite, b'en ca affiche par dessus et ca supprime ce qu'il y a en dessous.

    Au secours.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  10. #10
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    J'ai trouver un truc :Blend.Mode
    Sur cette page: http://download.java.net/javadesktop...lend.Mode.html

    Mais alors là j'ai grandement besoin d'aide pour m'aider a l'utiliser.
    Je ne sais pas par ou commencer.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  11. #11
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Encore un truc que j'ai trouver sur le BlendMode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    public enum BlendMode
    extends java.lang.Enum<BlendMode>
    A blending mode defines the manner in which the inputs of a Blend effect are composited together or how a Node is blended into the background of a scene.
    import javafx.scene.*;
    import javafx.scene.effect.*;
    import javafx.scene.paint.*;
    import javafx.scene.shape.*;
     
    Rectangle r = new Rectangle();
    r.setX(50);
    r.setY(50);
    r.setWidth(50);
    r.setHeight(50);
    r.setFill(Color.BLUE);
     
    Circle c = new Circle();
    c.setFill(Color.rgb(255, 0, 0, 0.5));
    c.setCenterX(50);
    c.setCenterY(50);
    c.setRadius(25);
    c.setBlendMode(BlendMode.MULTIPLY);
     
    Group g = new Group();
    g.getChildren().add(r);
    g.getChildren().add(c);
    Là, ce qui chie, c'est les import et le .setBlendMode() qui n'existent pas.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  12. #12
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    C'et du javafx. Très bien pour faire des application graphique, mais c'est du javafx, pas du java de base

    Je suis désolé, pour les Raster, je peux juste te guider vers la javadoc, je vois que c'est plus rapide dans plusieurs outils que j'utilise, bien plus que des setPixel, mais je ne connais pas assez.
    Pour le apha composite, visiblement, ce n'est pas utilisable dans ton cas vu tes essaie, donc une voie de garage :/

  13. #13
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Lorsque j'ai à travailler directement sur les pixels, j'utilise un java.awt.image.PixelGrabber. Il permet de faire un lien entre un tableau de pixel et une image.
    Lorsque tu modifies ton tableau de pixels, l'image est directement modifiée.
    Tu n'as plus à utiliser les setRGB et getRGB de BufferedImage.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  14. #14
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tiens, pour mieux comprendre les différents blends modes fournis par Java2D de base, et en récupérer tout un paquet de supplémentaires (type Multiply & cie), je te redirige vers le blog de Romain Guy qui en avait implémenté un paquet à l'époque.

    http://www.curious-creature.org/2006...es-for-java2d/
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  15. #15
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Merci Sinok,
    J'ai essayer le BlendComposite qui donne a peut de choses près ce que j'attend tout en ne resolvent absolument pas mon problème de base qui est que ca rame la mort.
    Si quelqu'un a une idée merci.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  16. #16
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Truc tout bête, mais gères tu le clipping lors de tes repaints (cf Graphics2D.getClipBounds et la version à quatre paramètres de repaint).

    Secondement, pourquoi ne pas déporter les opération de génération des images dans un thread séparé et ne faire que switcher les images (notion de double/triple buffer) dans le thread dédié au dessin.
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  17. #17
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    Heuuuuuu.
    Désolé j'ai rien compris, je vais faire des recherches là dessus.
    Si jamais tu as un tuto a me conseiller...
    Merci pour l'info.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

  18. #18
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    En ce qui concerne les ClipsBounds, le but est de ne mettre à jour que la partie des graphics qui a bougé, cela évite de réaliser trop d'opérations simultanées dans ton gui.
    Dans les faits, tu identifie la région qui doit être modifiée (enfin, le rectangle y correspondant) et tu appelles la version de la méthode repaint qui possède quatres paramètres qui définissent le secteur à repeindre.
    Et dans ton paintComponent, tu fais appel à la méthode getClipBounds qui définit la partie des graphics qui doit être modifiée, ceci afin d'éviter de repeindre l'intégralité du composant.

    Pour l'autre partie, l'idée est de pré générer les images qui seront affichées sur ton écran dans un thread séparé, et que l'EDT ne fasse que dessiner ces images sur la frame à intervalle régulier (notions de double buffering, triple buffering)
    Hey, this is mine. That's mine. All this is mine. I'm claiming all this as mine. Except that bit. I don't want that bit. But all the rest of this is mine. Hey, this has been a really good day. I've eaten five times, I've slept six times, and I've made a lot of things mine. Tomorrow, I'm gonna see if I can't have sex with something.

  19. #19
    Membre habitué Avatar de Pecose
    Homme Profil pro
    Batiment
    Inscrit en
    Février 2013
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Batiment
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2013
    Messages : 310
    Points : 194
    Points
    194
    Par défaut
    J'ai réussi, en gros je fait un cercle dans un a Area avec RadialGradientPaint:
    Apres je fait des polygones que je lum.substract() pour faire les ombres.
    Et ça marche.
    Merci de votre aide.
    Merci Sinok, tes conseilles m'ont mener a d'autres problèmes dont je parlerai surement dans une autre discussion.
    Des jours c'est facile, des jours c'est pas facile, mais c'est jamais le même jour.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. definition d'un moteur graphique
    Par elekis dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 13/11/2012, 15h36
  2. [Singleton] Moteur graphique : Singleton est-il un bon pattern ?
    Par Takusen dans le forum Design Patterns
    Réponses: 3
    Dernier message: 16/09/2008, 10h40
  3. Important: Conception d'un moteur graphique
    Par LightniN dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 18/11/2007, 13h26
  4. Créer un moteur graphique commercial
    Par taftouf dans le forum Moteurs 3D
    Réponses: 11
    Dernier message: 26/02/2007, 09h17
  5. entiers ou réels pour un moteur graphique?
    Par f56bre dans le forum Moteurs 3D
    Réponses: 2
    Dernier message: 22/10/2006, 17h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo