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

Contribuez Discussion :

The Cube (champ cube Windev) OpenGL demo


Sujet :

Contribuez

  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 553
    Par défaut The Cube (champ cube Windev) OpenGL demo
    Ce projet écrit à l'origine en WD12 avec GDImage 5.07,
    montre comment réaliser un contrôle de type "champ cube" avec GDImage 7.16 en mode 64-bit.

    Nom : TheCube.jpg
Affichages : 99
Taille : 125,9 Ko

    Caractéristiques principales :

    1 - Contrairement au "champ Cube" de décor WinDev, nul besoin d'installer le framework DotNET (donc, pas d'attente lors du lancement initial).
    2 - Vous pouvez interagir avec le cube et ses clones.
    3 - Chaque face du cube peut afficher une image différente.
    4 - En cliquant (bouton droit de la souris) sur une face du cube principal (le plus gros) vous pouvez changer l'image de fond.
    5 - Vous pouvez déplacer le cube à n'importe quel endroit dans le champ GDImage avec la souris.
    6 - La fonction "clone*" (spécifique de GDImage) vous permet d'avoir plusieurs cubes animés qui fonctionnent en même temps.

    Parallèlement ce projet montre comment effectuer une sélection avec la souris sur un objet 3D comportant plusieurs textures.

    Dans le monde de la 3D, le moyen usuel d'effectuer une sélection sur un objet en mouvement se nomme : "Picking".
    Cependant cette technique, basée sur l'éloignement des différents objets par rapport à la caméra, ne permet pas de connaître avec certitude l'endroit précis correspondant aux coordonnées de la souris.

    J'ai donc été obligé d'utiliser une autre méthode appelée "color detection".
    Avec cette méthode, lorsqu'on est en mode "HitDetection", on utilise une couleur unique pour chaque face du cube au lieu d'y "mapper" les textures.
    Ensuite, il suffit de tester la couleur du point survolé par la souris, pour connaître la face correspondante.

    L'affectation des couleurs est effectuée dans la procédure "DrawCube" : variable HitDetection.

    La détection proprement dite de "HitDetection" est effectuée dans la procédure "RenderAnimation" :

    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
        // Process the hit detection to change the background image
        if (HitDetection) {
            ZD_GetObjectXY(IDS_3DOBJECT, x, y);
            GetCursorPos(&lp); GetWindowRect(zGetMainItem(ID_CTRL), &rw);
            mX = lp.x - (rw.left + x);
            mY = lp.y - (rw.top + y);
            zSplitColorARGB(GetPixel(gP.GLbitmapDC, mX, mY), A, ID, G, B);
     
            // WinLIFT API to update the image background
            skUseThisBackground(gP.hMain, gP.tex[ID].FullName);
     
        } else {
            // Paint the resulting OpenGL bitmap to our window
            ZD_ReplaceObjectBitmap(ZI_CreateBitmapFromImage(zBitmapToImage( gP.GLbitmapDC )), IDS_3DOBJECT, TRUE);
        }
    Cette version est écrite pour VS2022, le code est linké avec TClib.lib pour produire un EXE de petite taille (16 Ko).

    Les objets 3D sont générés directement dans le champ GDImage, ce qui permet de mélanger 2D et 3D dans le même contrôle.

    clone* :
    Un clone est un sprite qui duplique les proriétés d'un objet GDImage, en réutilisant le même bitmap pour optimiser la mémoire.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [WD19] Manque derniere ligne champ rtf windev
    Par Ratafia67 dans le forum WinDev
    Réponses: 1
    Dernier message: 24/01/2019, 10h17
  2. [WD20] imprimer un champ tableur Windev 20
    Par Mister H dans le forum WinDev
    Réponses: 12
    Dernier message: 18/11/2016, 15h47
  3. drag drop champ image vers champ image (windev 20)
    Par gyver76370 dans le forum WinDev
    Réponses: 3
    Dernier message: 28/03/2015, 18h04
  4. [Projet en cours] Destiny Of The Cubes
    Par warwax dans le forum Projets
    Réponses: 54
    Dernier message: 10/12/2014, 07h53
  5. [Recrutement] programmeur C++ et sound designer pour THE CUBE
    Par dracroc dans le forum Projets
    Réponses: 3
    Dernier message: 18/01/2010, 18h10

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