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

MFC Discussion :

Problème d'inclusion de directx


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut Problème d'inclusion de directx
    Bonjour
    J'aurais voulu inclure directx dans un programme utilisant les MFC. J'ai récuperé le code d'une application Win32 fonctionnelle avec une classe DirectX:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class DirectX
    {
    public:
    DirectX();
    ~DirectX();
    LPDIRECT3D9 d3d;
    LPDIRECT3DDEVICE9 device;
    D3DPRESENT_PARAMETERS d3dpp;
    int init(HWND hWnd);
    void adjust(int largeur, int hauteur);
    };
    voila les fonctions:
    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
    int DirectX::init(HWND hWnd)
    {
    D3DDISPLAYMODE d3ddm;
    D3DDEVTYPE devtype;
    D3DCAPS9 caps;
    d3d=Direct3DCreate9(D3D_SDK_VERSION);
    if(!d3d)
      return 0;
    if(d3d->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)<0)
      return 0;
    ZeroMemory(&d3dpp,sizeof(d3dpp));
    d3dpp.Windowed=TRUE;
    d3dpp.SwapEffect=D3DSWAPEFFECT_DISCARD;
    d3dpp.EnableAutoDepthStencil=TRUE;
    d3dpp.AutoDepthStencilFormat=D3DFMT_D16;
    d3dpp.BackBufferFormat=d3ddm.Format;
    if(d3d->GetDeviceCaps(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,&caps)<0)
    {
     MessageBox(hWnd,"Pas de device HAL, le programme fonctionnnera,
     mais lentement","Attention",MB_OK|MB_ICONWARNING|MB_SETFOREGROUND);
     
     devtype=D3DDEVTYPE_REF;
    }
    else
    {
     devtype=D3DDEVTYPE_HAL;
    }
    if (d3d->CreateDevice(D3DADAPTER_DEFAULT,devtype,hWnd,D3DCREATE_HARDWARE_VERTEXPROCESSING,&d3dpp,&device)<0)
     return 0;
    return 1;
    }
    void DirectX::adjust(int largeur, int hauteur)
    {
    D3DXMATRIX proj;
    d3dpp.BackBufferWidth=largeur;
    d3dpp.BackBufferHeight=hauteur;
    device->Reset(&d3dpp);
    device->SetRenderState(D3DRS_ZENABLE,D3DZB_TRUE);
    device->SetRenderState(D3DRS_AMBIENT,0xffffff);
    D3DXMatrixPerspectiveFovLH(&proj,D3DX_PI/4,((float largeur)/hauteur,1.0f,500.0f);
    device->SetTransform(D3DTS_PROJECTION,&proj);
    }
    Seulement mystère une erreur se génère au niveau de la fonction adjust:
    Pourquoi? Init est bien appelé et largeur et hauteur ne sont pas nulles.
    Quelqu'un saurait-il comment m'aider?

    raphchar

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 464
    Par défaut
    MFC + DirectX, c'est plutôt expérimental.

    Quel type d'erreur ? Compilation ou Exécution

    Message d'erreur SVP.

  3. #3
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    A l'execution: à mon avis c'est une histoire similaire a la mise en mode plein écran ou ne suffit pas.
    Erreur:Exception non gérée à 0x00a510ff dans DirectxApp.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000000.
    NB: j'ai récupéré hWnd par la fonction

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 464
    Par défaut
    0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x00000000
    C'est un accès à NULL.
    Vérifiez dans la pile d'appel, lors du plantage, les valeurs des paramètres qui sont passés aux fonctions et méthodes. L'un d'eux doit être indument à NULL.

  5. #5
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    J'ai trouvé la solution hWnd n'était pas encore initialisé, du coup je ne pouvait pas initialiser mon objet DirectX non plus

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

Discussions similaires

  1. [MFC] Problèmes d'inclusion d'une DLL
    Par CaptnB dans le forum MFC
    Réponses: 1
    Dernier message: 12/05/2006, 18h01
  2. Réponses: 2
    Dernier message: 25/04/2006, 17h08
  3. Problème d'inclusions multiples
    Par Le Furet dans le forum C
    Réponses: 2
    Dernier message: 03/10/2005, 23h59
  4. Problème d'inclusion de pages.
    Par julien85 dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 01/05/2005, 18h06
  5. Problème d'inclusion
    Par degreste dans le forum MFC
    Réponses: 5
    Dernier message: 27/01/2004, 00h56

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