[directx]Programmabsturz bei "CreateVertexBuffer()"



  • Hallo,
    seit einigen Tagen stürtzt mein Programm beim initalisieren von directx3d9 ab und jetzt keine Idee mehr, woran das liegen könnte. Compiler ist DEV-CPP

    Hier ist erstmal der Codeausschnitt um den es sich dreht:

    //global
    LPDIRECT3D9		        D3D9;
    LPDIRECT3DDEVICE9	    D3D9Dev;
    LPDIRECT3DVERTEXBUFFER9 D3DVertexBuffer9 = NULL;
    
    #define D3DFVF_CUSTOMVERTEX ( D3DFVF_XYZ | D3DFVF_TEX1 )
    struct Vertex
    {
        float x, y, z;
        float tu, tv;
    };
    
    ...
    
    void init(void)
    {
          D3DPRESENT_PARAMETERS	D3DPP;
    
          ZeroMemory(&D3DPP, sizeof(D3DPP));
          D3DPP.hDeviceWindow	= hWnd;
          D3DPP.Windowed		= true;
          D3DPP.SwapEffect		= D3DSWAPEFFECT_DISCARD;
    
          if(!(D3D9 = Direct3DCreate9(D3D_SDK_VERSION)))
    	   return false;
    
          D3D9->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
    					D3DCREATE_HARDWARE_VERTEXPROCESSING, &D3DPP, &D3D9Dev);
    
          Vertex cubeVertices[] =
          {
    	{-1.0f, 1.0f,-1.0f,  0.0f,0.0f },
    	{ 1.0f, 1.0f,-1.0f,  1.0f,0.0f },
    	{-1.0f,-1.0f,-1.0f,  0.0f,1.0f },
    	{ 1.0f,-1.0f,-1.0f,  1.0f,1.0f },
    
    	{-1.0f, 1.0f, 1.0f,  1.0f,0.0f },
    	{-1.0f,-1.0f, 1.0f,  1.0f,1.0f },
    	{ 1.0f, 1.0f, 1.0f,  0.0f,0.0f },
    	{ 1.0f,-1.0f, 1.0f,  0.0f,1.0f },
    
    	{-1.0f, 1.0f, 1.0f,  0.0f,0.0f },
    	{ 1.0f, 1.0f, 1.0f,  1.0f,0.0f },
    	{-1.0f, 1.0f,-1.0f,  0.0f,1.0f },
    	{ 1.0f, 1.0f,-1.0f,  1.0f,1.0f },
    
    	{-1.0f,-1.0f, 1.0f,  0.0f,0.0f },
    	{-1.0f,-1.0f,-1.0f,  1.0f,0.0f },
    	{ 1.0f,-1.0f, 1.0f,  0.0f,1.0f },
    	{ 1.0f,-1.0f,-1.0f,  1.0f,1.0f },
    
    	{ 1.0f, 1.0f,-1.0f,  0.0f,0.0f },
    	{ 1.0f, 1.0f, 1.0f,  1.0f,0.0f },
    	{ 1.0f,-1.0f,-1.0f,  0.0f,1.0f },
    	{ 1.0f,-1.0f, 1.0f,  1.0f,1.0f },
    
    	{-1.0f, 1.0f,-1.0f,  1.0f,0.0f },
    	{-1.0f,-1.0f,-1.0f,  1.0f,1.0f },
    	{-1.0f, 1.0f, 1.0f,  0.0f,0.0f },
    	{-1.0f,-1.0f, 1.0f,  0.0f,1.0f }
           };
    
           //bis hierhin kommt er...
           D3D9Dev->CreateVertexBuffer(24*sizeof(Vertex),0,D3DFVF_CUSTOMVERTEX,
                                       D3DPOOL_DEFAULT, &D3DVertexBuffer9, NULL );
    
           //...und hier schon nicht mehr
    
           VOID* pVoid;
    
           D3DVertexBuffer9->Lock(0, 0, (void**)&pVoid, 0);
           memcpy(pVoid, cubeVertices, sizeof(cubeVertices));
           D3DVertexBuffer9->Unlock();
    }
    

    Er kommt bei mir also bis zu "CreateVertexBuffer()" und stürtzt dann einfach ab.
    Der Debugger von DEV-Cpp meint dort, dass es eine Zugriffsverletzung gibt, also eine segemtation fault.

    So, aber ich bin hier echt ratlos, aber ihr seht die Ursache bestimmt auf Anhieb^^

    MfG



  • ich sag mal D3D9Dev == NULL.



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Spiele-/Grafikprogrammierung verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Ja schon doof, wenn man weder seine Rueckgabewerte prueft noch einen Debugger bedienen kann. f'`8k

    Autocogito

    Gruß, TGGC (making great games since 1992)


Anmelden zum Antworten