DirectX->GetAdapterCount

enrico_tietz

Grünschnabel
Hallo an alle.
Möchte grade mal anfangen mit directX - Programmierung.
Warum läuft folgendes Code-Beispiel nicht.
Bei GetAdapterCount bekomme ich immer eine Zugriffsverletzung.
HTML:
#include <Windows.h>
#include <StdIO.h>
#include <d3d9.h>

int                     g_iNumAdapters; // Anzahl der Adapter
D3DADAPTER_IDENTIFIER9* g_pAdapters;     // Adapterliste
PDIRECT3D9              g_pD3D = NULL;  // IDirect3D9-Schnittstelle


int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   char*     pcCmdLine,
                   int       iShowCmd)
{
 	char acAdapterInfo[1024];
	
	//ZU ERLEDIGEN: Fügen Sie hier den Code ein.
	PDIRECT3D9 g_pd3d = NULL; //IDirect3D9 - Schnittstelle

	//Schnittstelle erzeugen
	g_pd3d = Direct3DCreate9(D3D_SDK_VERSION);

	if (g_pd3d == NULL)
	{
		//Fehler beim Erstellen der Schnittstelle
		MessageBox(NULL, "Direct3D 9 konnte nicht initialisiert werden!\
						  Installieren Sie bitte die neueste DirectX-Version.","Fehler", MB_OK | MB_ICONEXCLAMATION);

		return 1;
	}

	// Anzahl der Adapter ermitteln
	g_iNumAdapters = g_pD3D->GetAdapterCount();

	//Speicher reservieren und Informationen über jeden Adapter sammeln
	g_pAdapters = new D3DADAPTER_IDENTIFIER9[g_iNumAdapters];

	for(int iAdapter = 0 ; iAdapter < g_iNumAdapters ; iAdapter++)
	{
		if(FAILED(g_pD3D->GetAdapterIdentifier(iAdapter,0,&g_pAdapters[iAdapter])))
		{
			// Fehler
			MessageBox(NULL, "Adapterinformation konnte nicht abgefragt werden!","Fehler",MB_OK | MB_ICONEXCLAMATION);

			// Aufräumen
			g_pD3D->Release();
			delete[] g_pAdapters;
			return 1;
		}

		// Adapterinformationen anzeigen
		sprintf(acAdapterInfo,"Adapter-ID: %d\nName: %s\nTreiber: %s\nnTreiberversion: %d",
				iAdapter,
				g_pAdapters[iAdapter].Description,
				g_pAdapters[iAdapter].Driver,
				g_pAdapters[iAdapter].DriverVersion);

		MessageBox(NULL,acAdapterInfo,"Adapter gefunden",MB_OK | MB_ICONINFORMATION);

	}

	// aufräumen
    g_pD3D->Release();
	delete[] g_pAdapters;
	return 0;
}


:confused: Kann mir bite jemand helfen.
 
Hallo,
der globale Pointer(g_pD3D9) hat den Wert NULL !
Die Schnittstelle hast Du mit den lokalen Pointer (g_pd3d9) erzeugt.

Tip : Entscheide Dich für den globalen Pointer g_pD3D9.
mfg Markus

(ps GetAdapterCount hat den Rückgabetyp UINT)
 
Zurück