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 :

[directdraw] redimensionner une surface


Sujet :

DirectX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut [directdraw] redimensionner une surface
    J'ai cree 2 surfaces (une primaire et un back buffer) pour une fenetre ainsi:

    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
    32
    33
    34
    35
     
       memset (&surface_desc, 0, sizeof (surface_desc));
       surface_desc.dwSize = sizeof (surface_desc);
       surface_desc.dwFlags = DDSD_CAPS;
       surface_desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
     
       /* Hack to cleanly remove a warning */
       sd = &surface_desc;
       if (FAILED(IDirectDraw7_CreateSurface(object,
                                             (DDSURFACEDESC *)sd,
                                             &surface_primary,
                                             NULL)))
         goto no_primary_surf;
     
       if (FAILED(IDirectDrawSurface7_SetClipper(surface_primary,
                                                 clipper)))
         goto no_primary_surf_set_clipper;
     
       if (!GetClientRect(window, &rect))
         goto no_get_client;
     
       memset (&surface_desc, 0, sizeof (surface_desc));
       surface_desc.dwSize = sizeof (surface_desc);
       surface_desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
       surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
       surface_desc.dwWidth = rect.right - rect.left;
       surface_desc.dwHeight = rect.bottom - rect.top;
     
       /* Hack to cleanly remove a warning */
       sd = &surface_desc;
       if (FAILED(IDirectDraw7_CreateSurface(object,
                                             (DDSURFACEDESC *)sd,
                                             &surface_back,
                                             NULL)))
         goto no_back_surf;
    je desire redimensionner le backbuffer. J'ai essaye ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
       memset (&surface_desc, 0, sizeof (surface_desc));
       surface_desc.dwSize = sizeof (surface_desc);
       surface_desc.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
       surface_desc.dwWidth = width;
       surface_desc.dwHeight = height;
       IDirectDrawSurface7_SetSurfaceDesc(surface_back, &surface_desc, NULL);
    mais lorsque je compile avec gcc, j'ai l'erreur:

    evas_outbuf.c:322: error: structure has no member named `SetSurfaceDesc'

    Or SetSurfaceDesc a ete ajoute dans DirectDraw 3 (d'apres le fichier ddraw.h).

    Quelqu'un voit-il ce qui ne va pas ?

    Merci

    PS: j'ai detruit et recree le back buffer. Ca marche, mais j'aurais aime avoir quelque chose de plus rapide, comme l'utilisation de SetSurfaceDesc.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Question bête, mais... as-tu déjà songé à utiliser autre chose ? DirectDraw c'est plutôt antique comme API.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 340
    Par défaut
    oui, direct3d. Il y a les 2 backends.

  4. #4
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Pourquoi redimensionner une DDSurface en exécution ; en général on n'y touche pas et de même je ne sais pas si c'est possible car une DDSurface=espace mémoire de la RAM Vidéo

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Question bête, mais... as-tu déjà songé à utiliser autre chose ? DirectDraw c'est plutôt antique comme API.
    Oui je veux bien mais SDL que tout le monde utilise fait usage de quelle API de Direct X ?
    Les SDL_Surfaces c'est quoi ?
    J'en conclus que SDL c'est antique et dépassé alors ....

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    J'en conclus que SDL c'est antique et dépassé alors ....
    Complétement. De nos jours il devient impensable de développer une application 2D temps réel (et encore plus une bibliothèque graphique) sans passer par OpenGL ou Direct3D.

    C'est par exemple pour ça que j'ai développé SFML, un SDL-like qui utilise les technologies modernes.

  7. #7
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 540
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 540
    Par défaut
    Citation Envoyé par Laurent Gomila Voir le message
    Complétement. De nos jours il devient impensable de développer une application 2D temps réel (et encore plus une bibliothèque graphique) sans passer par OpenGL ou Direct3D.
    Le jeu que je développe qui repose sur DirectDraw est à mettre à la poubelle alors
    Et je propose de supprimer la section SDL du forum vu que c'est obsolète

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    DirectDraw et SDL ont été utilisés depuis des années pour faire des jeux, il n'y a aucune raison que ça ne marche plus. C'est juste que les APIs 3D ont beaucoup évolué et qu'utiliser les "fast blits" à peine accélérés pour afficher des sprites c'est un peu vieillot. Comment fais-tu des rotations, de l'alpha-blending, ou des post-fx (shaders) efficacement avec ces vieilles APIs ?

    Bref je n'en dirai pas plus, ne devions pas du sujet surtout si c'est pour partir dans un troll

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/05/2006, 20h56
  2. Pb lors de l'accès à une surface DirectDraw
    Par Mark53 dans le forum DirectX
    Réponses: 8
    Dernier message: 30/11/2004, 00h03
  3. Réponses: 1
    Dernier message: 12/05/2004, 19h02
  4. Effet Fade In / Fade Out sur une surface DirectDraw
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 08/09/2002, 17h37
  5. Redimensionnement d'une surface
    Par Freakazoid dans le forum DirectX
    Réponses: 4
    Dernier message: 01/07/2002, 22h01

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