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

Firefly

Alter Hase

  • »Firefly« ist der Autor dieses Themas

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

11

21.05.2006, 11:52

Danke leute, war mein fehler...hab vergessen, dass direct3d ja verschiedene Erfolgscodes hat. Das Erstellen und die Adapterabfrage funzt jetzt auch. Ich hab dann jetzt mal das Programm auf die DisplayModes erweitert. Aber arum ist in meinem Programm iNumModes 0? Bei den Beispielprogrammen gibt es für D3DFMT_R5G6B5 ja auch viele verschiedene Display-Modes....
Hier der Code:

C-/C++-Quelltext

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
#include <windows.h>
#include <d3d9.h>
#include <stdio.h>
int WINAPI WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
    LPDIRECT3D9 pd3d=Direct3DCreate9(D3D_SDK_VERSION);
    if(pd3d==NULL)
    {
        MessageBox(NULL,"Direct3D Instance konnte nicht erzeugt werden !","",MB_OK);
        pd3d->Release();
        return 1;
    }
    else
    {
        MessageBox(NULL,"Direct3d Instance wurde erfolgreich erstellt !","",MB_OK);
    }
    //

    int iAdapter;
    int iNumAdapters=pd3d->GetAdapterCount();
    D3DADAPTER_IDENTIFIER9* pAdapters=new D3DADAPTER_IDENTIFIER9[iNumAdapters];
    for(iAdapter=0;iAdapter<iNumAdapters;iAdapter++)
    {
        if(FAILED(pd3d->GetAdapterIdentifier(iAdapter,0,&pAdapters[iAdapter])))
        {
        MessageBox(NULL,"Adapter konnte nicht gefunden werden!","",MB_OK);
        pd3d->Release();
        delete[] pAdapters;
        return 1;
        }
        char acAdapterInfo[1024];
        sprintf(acAdapterInfo,"Adapter-ID:%d\n"
            "Name: %s\n"
            "Treiber: %s\n"
            "nTreiverversion: %d",iAdapter,pAdapters[iAdapter].Description,pAdapters[iAdapter].Driver,pAdapters[iAdapter].DriverVersion);
        MessageBox(NULL,acAdapterInfo,"Adapter-Info:",MB_OK);
    }
    //

    int iNumModes=pd3d->GetAdapterModeCount(iAdapter,D3DFMT_R5G6B5);
    if(iNumModes>0)
    {
        D3DDISPLAYMODE* pModes=new D3DDISPLAYMODE[iNumModes];
        char acModes[16384]="";
        for(int iMode=0;iMode<iNumModes;iMode++)
        {
            pd3d->EnumAdapterModes(iAdapter,D3DFMT_R5G6B5,iMode,&pModes[iMode]);
            sprintf(acModes,"%d\nModus %d: %dx%d bei %d Hz (0:Standard)",acModes,iMode,pModes[iMode].Width,pModes[iMode].Height,pModes[iMode].RefreshRate);

        }
        MessageBox(NULL,acModes,"Display-Modes:",MB_OK);
        delete[] pModes;
    }
    else
    {
        MessageBox(NULL,"Keine DisplayModes vorhanden!","",MB_OK);
        pd3d->Release();
        delete[] pAdapters;
        return 1;
    }
    //

    pd3d->Release();
    delete[] pAdapters;
    return 0;
}
:?:

12

21.05.2006, 12:06

C-/C++-Quelltext

1
int iNumModes=pd3d->GetAdapterModeCount(iAdapter,D3DFMT_R5G6B5);


Du musst hier iAdapter noch um eins verringern, weil iAdapter ja am Ende der Schleife genau den Wert iNumAdapters haben sollte und das eben um eins zu groß ist.

Firefly

Alter Hase

  • »Firefly« ist der Autor dieses Themas

Beiträge: 484

Wohnort: Irgendwoundnirgendwo

  • Private Nachricht senden

13

21.05.2006, 12:21

danke...juhuu...jetzt funzts :D :D :D :D :D :D :D

Werbeanzeige