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

Développement 2D, 3D et Jeux Discussion :

Le type float


Sujet :

Développement 2D, 3D et Jeux

  1. #1
    Membre habitué Avatar de skysee
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 191
    Points : 137
    Points
    137
    Par défaut Le type float
    Bonjour à tous,
    j'ai une petite question qui me travaille.

    L'écran est un espace en 2D. Une des carractéristiques de l'affichage est sa résolution (ex chez moi 1680 * 1050). Ca veut donc 1680 pixels en largeur et 1050 pixels en hauteurs. Ce sont des nombres entiers, il ne peut rien avoir entre deux pixels.

    Si je prends l'exemple de la SFML, pour indiquer la postion d'un sprite dans cet espace on utillise la fonction setPosition() qui attend deux float.

    Pourquoi utilliser le type float?

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    SFML est basée sur OpenGL si j'ai bien compris, ou si cela ne l'est pas , je vais expliqué le principe pour OpenGL.

    OpenGL calcul un monde 3D.
    Comme ton ecran est en 2D , le monde 3D va être recalculé, pour pouvoir etre affiché en 2D.
    Dans le monde 3D on place les éléments selon des valeurs, ( valeurs sans unités ), ce qui veut dire tu place un objet à 1 par rapport l'origine , ça peut être un mètre , un kilomètre, un decimètre.
    Dans le monde 3D , on peut se permettre de dire, ma fenêtre va voir de -1000 à 1000 ( sur les axes des x ) par éxemple.
    Mais aussi de -1 à 1 ... Ce qui veut dire que pour placer un objet précisément , il te faudra des floats.

    Si tu as besoin de plus d'explication , n'hésite pas
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre expérimenté

    Profil pro
    Programmeur
    Inscrit en
    Août 2002
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Programmeur

    Informations forums :
    Inscription : Août 2002
    Messages : 1 091
    Points : 1 679
    Points
    1 679
    Par défaut
    Citation Envoyé par skysee Voir le message
    Pourquoi utilliser le type float?
    Cela permet surtout une précision inférieure à un pixel.

    pourquoi est-ce que c'est important ? parce que les opérations de texture, l'interpolation des lignes et bordures de triangles etc. Tout cela est calculé avec des variations qui ne sont pas calées sur un pixel.

    par exemple si tu as un triangle, dans un sommet tu as la couleur blanche 1.0f, un autre sommet la couleur noire 0.0f.
    Si tu places le premier sommet en (0,0) et le deuxieme sommet en (2,0), alors au point (1,0) tu calculeras une valeur de gris intermédiaire 0.5f. Si tu utilises la précision subpixel, tu peux placer le premier sommet à (0.5, 0), le deuxième sommet à (2.5, 0) alors au point (1,0) tu calculeras une valeur de gris intermediaire un peu plus claire 0.75f.

    Cela te permet donc de simuler visuellement des déplacements inférieurs à un pixel. Ou par exemple si tu veux avoir un déplacement smooth de 10 pixels en 3 frames, si tu ne pouvais spécifier que des positions entières tu ne pourrais pas. Par contre avec des positions flottantes tu peux spécifier un déplacement 3.33f la première frame, 6.66f la seconde frame et 10 la troisième frame, ce qui simule un déplacement smooth de ta géométrie. Pareil si tu veux zoomer sur une image mais que ton zoom n'est pas un nombre entier.

    Bref l'écran est bien entendu toujours constitué de pixels qui ne sont addressables qu'en entier. Mais il y a une abstraction derrière qui a besoin de plus de précision. Le passage de l'un a l'autre s'appelle la rasterization et c'est une science à part entière (là j'exagère mais il y a bcp de choses à savoir sur le sujet).

    LeGreg

    Mon site web | Mon blog | Mes photos | Groupe USA
    > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM
    > presse la touche caps lock, stp
    > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA

  4. #4
    Membre habitué Avatar de skysee
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2002
    Messages : 191
    Points : 137
    Points
    137
    Par défaut
    Merci beaucoup j'ai compris

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

Discussions similaires

  1. [type float ] problème d'affichage
    Par you98 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 14/11/2005, 08h06
  2. Précision du type float
    Par cj227854 dans le forum C
    Réponses: 5
    Dernier message: 02/11/2005, 20h54
  3. insérer une valeur de type float dans une abse de données
    Par Stephane_br dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/11/2005, 10h47
  4. Pb de formatage de champs de type float
    Par FrankyNormand dans le forum XMLRAD
    Réponses: 9
    Dernier message: 05/05/2005, 12h37
  5. [MS-SQL][ADO] précision du type FLOAT
    Par Le Lézard dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/09/2004, 15h30

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