Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

07.01.2004, 21:44

Beispielprogramm 2.4.2.3

Hallo zusammen,

ich habe ein Problem mit der Erweiterung des Programms auf Seite 92 mit dem Code auf Seite 95.

Das Auflisten und Anzeigen aller auf dem System verfügbaren Direct3D-Adapter funktioniert zwar, allerdings nicht die Auflistung der möglichen 16-Bit Formate.

Mein Code sieht so aus :

Quellcode

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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <Windows.h>
#include <STDIO.H>
#include <D3D9.h>

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

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd )
{
    char acAdapterInfo[1024];
   
    //Schnittstelle für Direct3D erzeugen
    g_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(g_pD3D == NULL)
    {
        //Fehler!
        MessageBox(NULL,"Fehler beim Erzeugen der Direct3D-Schnittstelle!","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];

    int iAdapter;

    for(iAdapter = 0; iAdapter < g_iNumAdapters; iAdapter++)
    {
    
        if(FAILED(g_pD3D->GetAdapterIdentifier(iAdapter, 0, &g_pAdapters[iAdapter])))
        {
            //Fehler!
            MessageBox(NULL,"Adapterinformationen konnten nicht abgefragt werden!","Fehler", MB_OK | MB_ICONEXCLAMATION);
            g_pD3D->Release();
            delete[] g_pAdapters;
            return -1;

        }


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

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

    }

    int             iNumModes;      //Anzahl der Videomodi
    D3DDISPLAYMODE* pModes;         //Array der Videomodi
    char            acModes[16384]; //Beschreibungsstring

    //Ermitteln, wie viele 16-bit-Videomodi verfügbar sind
    iNumModes = g_pD3D->GetAdapterModeCount(iAdapter, D3DFMT_R5G6B5);
    if(iNumModes > 0)
    {
        //Speicherplatz reservieren und den String zurücksetzten
        pModes = new D3DDISPLAYMODE[iNumModes];
        strcpy(acModes, "");

        //Jeden Video Modus durchgehen
        int iMode;
        for(iMode = 0; iMode < iNumModes; iMode++)
        {
            //Informationen über diesen Modus abfragen
            g_pD3D->EnumAdapterModes(iAdapter, D3DFMT_R5G6B5, iMode, &pModes[iMode]);
            
            //Nummer, Breite, Höhe und Bildwiederholfrequenz in den String schreiben
            sprintf(acModes, "%s\nModus %d: %dx%d bei %d Hz (0: Standard)", acModes, pModes[iMode].Width, pModes[iMode].Height, pModes[iMode].RefreshRate);

        }

        //Video Modi anzeigen
        MessageBox(NULL, acModes, "Verfügbare 16-Bit Modi", MB_OK | MB_ICONINFORMATION);

        delete[] pModes;


    }



    g_pD3D->Release();
    delete[] g_pAdapters;

    return 0;
    
}


Was habe ich Falsch gemacht ?

Hier noch meine Rechnerkonfiguration : Amd Athlon XP 2200, 512 MB-Ram, Radeon 9600 Pro mit aktuellsten Treibern, DirectX 9, Windows 98

2

08.01.2004, 15:01

Ups das muss noch mit in die erste for schleife :)

Trotzdem Danke ;D