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 ou autre ..


Sujet :

DirectX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    mai 2011
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : mai 2011
    Messages : 816
    Points : 82
    Points
    82
    Par défaut DirectDraw ou autre ..
    Bonjour,
    J'ai lut que les API DirectDraw étaient obsoléte , et remplacer par DirectGraphics,
    cependant je n'ai trouvé aucun exemple simple utilisant DirectGraphics.

    La migration de DirectDraw vers DirectGrpahics est t'il simple ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    6 828
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 6 828
    Points : 31 296
    Points
    31 296
    Billets dans le blog
    4
    Par défaut
    Pourquoi t'embêter avec DiredtDraw ou DirectX alors qu'utiliser SFML ou SDL est bien plus simple, supporte plusieurs plateformes et possède un meilleur support puisqu'utilisés par un grand nombre de personnes ?
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    mai 2011
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : mai 2011
    Messages : 816
    Points : 82
    Points
    82
    Par défaut
    Désolé mais SDL ne prend pas en charge directdraw,
    J'ai fais une recherche dans les sources de SDL la chaine 'IDirectDrawSurface' et rien trouvé.
    Peux être il utilise Direct3D à la place.

  4. #4
    Expert éminent
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    mai 2010
    Messages
    3 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : mai 2010
    Messages : 3 090
    Points : 9 688
    Points
    9 688
    Par défaut
    Qu'est que cela peut faire qu'il supporte pas DirectDraw ?
    Sachant que si tu utilise la SDL , tu n'utilise par logique plus DirectDraw (vu que c'est une lib complète pour le rendu 2D).

    Si on parle de la SDL1 elle est purement software donc utilise assez peu l'api Windows
    Si on parle de la SDL2 elle utilise OpenGL.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    mai 2011
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : mai 2011
    Messages : 816
    Points : 82
    Points
    82
    Par défaut
    J'ai tester et modifier un code source SDL qui affiche un bitmap , ca fonctionne et à premiere vue assez facile d'utilisation.
    J'ai comparer mon projet directdraw affichant un bitmap à mon projet SDL affichant le même bmp,je constate alors que mon projet SDL consomme beaucoup plus de UC (20%) par rapport à projet utilisant directdraw (1%).
    Il s'agit bien de SDL2.

    Je joint le code et apparament le bitmap est afficher logiciellement.

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    #include <iostream>
    #include <Windows.h>
    #include <SDL2/SDL.h>
     
    const int WIDTH = 1024, HEIGHT = 768;
     
    //int main( int argc, char *argv[] )
    int APIENTRY WinMain(HINSTANCE hInstance,
    	HINSTANCE hPrevInstance,
    	LPSTR     lpCmdLine,
    	int       nCmdShow)
    {
        SDL_Surface *imageSurface = NULL;
        SDL_Surface *windowSurface = NULL;
     
        if ( SDL_Init( SDL_INIT_EVERYTHING ) < 0 )
        {
            std::cout << "SDL could not initialize! SDL Error: " << SDL_GetError( ) << std::endl;
        }
     
        SDL_Window *window = SDL_CreateWindow( "Hello SDL World", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WIDTH, HEIGHT, SDL_WINDOW_OPENGL);
        windowSurface = SDL_GetWindowSurface( window );
     
        if ( NULL == window )
        {
            std::cout << "Could not create window: " << SDL_GetError( ) << std::endl;
     
            return EXIT_FAILURE;
        }
     
        SDL_Event windowEvent;
     
        //imageSurface = SDL_LoadBMP( "t:\\internet\\sdl\\use\\Tutorial 003_Drawing A BMP Image\\hello_world.bmp" );
    	imageSurface = SDL_LoadBMP("image4.bmp");
        if( imageSurface == NULL )
        {
            std::cout << "SDL could not load image! SDL Error: " << SDL_GetError( ) << std::endl;
        }
    	int gh=0;
     
        while ( true )
        {
            if ( SDL_PollEvent( &windowEvent ) )
            {
                if ( SDL_QUIT == windowEvent.type )
                {
                    break;
                }
            }
    		Sleep(75);
    		/*SDL_LockSurface(imageSurface);
    		memset(imageSurface->pixels, gh++, 1000);
    		SDL_UnlockSurface(imageSurface);*/
    		SDL_Rect src = imageSurface->clip_rect;
    		SDL_Rect dst = windowSurface->clip_rect;
    		SDL_LowerBlitScaled( imageSurface, &src, windowSurface, &dst );
     
     
     
            //Update the surface
            SDL_UpdateWindowSurface( window );
        }
     
        SDL_FreeSurface( imageSurface );
        SDL_FreeSurface( windowSurface );
     
        imageSurface = NULL;
        windowSurface = NULL;
     
        SDL_DestroyWindow( window );
        SDL_Quit( );
     
        return EXIT_SUCCESS;
    }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    mai 2011
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : mai 2011
    Messages : 816
    Points : 82
    Points
    82
    Par défaut
    J'avais utiliser les API de la 1.2 , en utilisant celle de la 2.0 (le code différe) ca speed.
    OK.

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

Discussions similaires

  1. [langage] Comparer Perl avec d'autres langages comme C ?
    Par Anonymous dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2002, 00h52
  2. Réponses: 2
    Dernier message: 10/07/2002, 12h51
  3. gérer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    Réponses: 1
    Dernier message: 14/06/2002, 14h39
  4. Réponses: 2
    Dernier message: 21/05/2002, 11h25
  5. Réponses: 3
    Dernier message: 09/05/2002, 02h39

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