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

DirectX Discussion :

blitter une image


Sujet :

DirectX

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 3
    Points : 3
    Points
    3
    Par défaut blitter une image
    voici un code d'affichage d'une image avec direct x :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    HBITMAP hbm;
    HDC surface;
    HDC image;
    ZeroMemory(&descr,sizeof(descr));
    descr.dwSize=sizeof(descr);
    dd->GetSurfaceDesc(&descr);
    hbm=(HBITMAP)LoadImage(NULL,"im.bmp",IMAGE_BITMAP,descr.dwWidth,descr.dwHeight,LR_LOADFROMFILE | LR_CREATEDIBSECTION);
    image=CreateCompatibleDC(NULL);
    SelectObject(image,hbm);
    dd->GetDC(&surface);
    BitBlt(surface,0,0,descr.dwWidth,descr.dwHeight,image,0,0,SRCCOPY);
    la surface a bien été crée mais l'image ne s'affiche pas , pk ?
    au passage j'aimerais savoir si il y a un moyen façon printf() judicieusement placé pour une console, pour vérifier que tout va bien.

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Essaie avec des surfaces basculantes ( voir SDK de Direct X ) et faire un Flip

    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
    26
    27
    28
    29
    30
    31
     
    LPDIRECTDRAWSURFACE Primary;
    LPDIRECTDRAWSURFACE Off;
     
    DDSURFACEDESC ddsd;
    ZeroMemory (&ddsd, sizeof(ddsd));
    ddsd.dwSize = sizeof( ddsd );
    ddsd.dwFlags = DDSD_CAPS | DDSD_BACKBUFFERCOUNT;
     ddsd.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE |
                                DDSCAPS_FLIP |
                                DDSCAPS_COMPLEX;
    hr=lpDD->CreateSurface( &ddsd, &Primary, NULL );
       if(hr!=DD_OK)  ....;
    ZeroMemory(&ddscaps, sizeof(ddscaps));
    ddscaps.dwCaps = DDSCAPS_BACKBUFFER;
     
    hr= Primary->GetAttachedSurface( &ddscaps,  &Off );
         if(hr!=DD_OK ) .....;
     
     
    Puis dans le WinMain
     
    if( PeekMessage( &msg, NULL, 0, 0, PM_NOREMOVE ) )
       {
               if( !GetMessage( &msg, NULL, 0, 0 ) )
               return msg.wParam;
               TranslateMessage(&msg);
                DispatchMessage(&msg);
           }
    	else
    hr=Primary->Flip( NULL, DDFLIP_WAIT ) ;

    Pour charger une bitmap et l'afficher , le fichier DDUTIL.CPP du SDK de Direct X fournit des fonctions pour cela

    Un rappel ! printf ne marche pas en win32 fenêtré. Utiliser plutôt un fichier texte pour déboguer dans lequel on écrit

  3. #3
    mat.M
    Invité(e)
    Par défaut
    J'oubliais !!
    Surtout faire ReleaseDC avec GetDC !! C'est peut-être la cause des soucis

Discussions similaires

  1. déplacer une image sans la blitter
    Par r0d dans le forum SDL
    Réponses: 6
    Dernier message: 05/02/2009, 19h33
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  3. problème sdl blitter une image.!
    Par mitherkiller dans le forum SDL
    Réponses: 6
    Dernier message: 15/04/2007, 01h10
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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