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

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

1

17.08.2005, 18:03

Problem mit meinem Grafikkarten Analyzer...

Hall ich hab probiert das Programm aus Davids Buch in etwa so wie er nachzuprogrammiern, es läuft aber nur Halb, denn ich bekomm zwar die Adapter Infos, aber die Modus Informationen bekomm ich nich was könnt das sein???, im Buch war der code auf ein paar seiten verschoben, vielleicht gehören einzelne Teile irgendwoanders hiun, aber das ist der Nchteil des Buchs, man weiss nie so recht wohin mit was...
Jier 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
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <cstdlib>
#include <iostream>
#include <d3d9.h>
#include <stdio.h>

using namespace std;

int main()
{      
       
             PDIRECT3D9 pD3D= Direct3DCreate9(D3D_SDK_VERSION);
             
             if(!pD3D)
             { 
                    cout<<"Error: Could not run the Program!"<<endl;
                             
                  return 1;
             }
             
             int iAdaptNum = pD3D->GetAdapterCount();
             D3DADAPTER_IDENTIFIER9* pAdapt = new D3DADAPTER_IDENTIFIER9 [iAdaptNum];
            
            cout<<"    --Grafikcard Analyzer--\n\n";
            
       for(int iAdapt= 0; iAdapt < iAdaptNum ; ++iAdapt)
            { 
            
              
              if(pD3D->GetAdapterIdentifier(iAdapt,0,&pAdapt[iAdapt]))
                  {
                        cout<<"Error: Could not get the Adapters!"<<endl;                                                     
                                                                                  
                     pD3D->Release();
                     delete[] pAdapt;
                     
                     return 1;
                     }
                     
         
            
            char chAdapt[256];
            sprintf(chAdapt,"Adapter-ID     : %i\n"
                            "Name           : %s\n"
                            "Driver         : %s\n"
                            "Driver-Version : %i\n",
                            iAdapt,
                            pAdapt[iAdapt].Description,
                            pAdapt[iAdapt].Driver,
                            pAdapt[iAdapt].DriverVersion
                    );
                    
                    
                 cout<<chAdapt<<endl<<endl;
                 
            
              
           
           
            int iModeNum = pD3D->GetAdapterModeCount(iAdapt,D3DFMT_R8G8B8);
            D3DDISPLAYMODE* pMode = new D3DDISPLAYMODE [iModeNum];
        
        
       
        for(int iMode=0; iMode < iModeNum; ++iMode)
              {   
                
                if(pD3D->EnumAdapterModes(iAdapt,D3DFMT_R8G8B8,iMode,&pMode[iMode]) || iModeNum<=0)
                { 
                     cout<<"Error: Could not get the Modes!"<<endl;                                                     
                                                                                  
                     pD3D->Release();
                     delete[] pMode;
                     
                     return 1;
                }
                 
                 
              char chMode[16384];
              sprintf(chMode,"Availaible 24-Bit Modes for your G.C.: %i\n"
                           "  -Resolution  : %i x %i\n"
                           "  -Refresh Rate: %i\n",
                           iMode,
                           pMode[iMode].Width,
                           pMode[iMode].Height,
                           pMode[iMode].RefreshRate
                   );
            
            
              
             cout<<chMode<<endl<<endl;
            
              
            
              
              }
              delete[] pMode;
            }  
            
     pD3D->Release();
     delete[] pAdapt;
    
               
            
    getchar();
    return 0;
}


Danke Leute :wirbel: :wirbel:

2

17.08.2005, 18:31

Du kannst dir ja mal den qt des Progs auf der Buch-CD anschauen... da wird er ja wohl richtig drauf sein!
Try and Error!
MfG, schachmat

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

17.08.2005, 20:51

bemerkung am rande:

C-/C++-Quelltext

1
char chMode[16384];


sicher, dass es einen 16 KB string dazu braucht!?

ich würd da etwas kürzen und dafür chAdapt etwas mehr spendieren ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

17.08.2005, 21:14

was genau ist denn eigentlich das problem mit den mode infos!?
meine graka z.b. ( RADEON 9600 XT ) unterstützt keine R8G8B8 displaymodes, nur X8R8G8B8.

also ich hab mir den code nochmal etwas genauer angeguckt (war ein bisschen anstregend, aber...).

es scheint als möchtest du in den 16KB string alle modes reinkopieren (wär zumindest eine erklärung für dessen größe)
ich denke du willst also folgende ausgabe:

Availaible 24-Bit Modes for your G.C.:
mode1
mode2
mode3
.
.
.

dazu würd ich mal "Availaible 24-Bit Modes for your G.C.:\n" ausgeben und dann nen string für jeden mode zusammenbauen und in der schleife über cout ausgeben.


achja:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
if(pD3D->EnumAdapterModes(iAdapt,D3DFMT_R8G8B8,iMode,&pMode[iMode]) || iModeNum<=0) 
                { 
                     cout<<"Error: Could not get the Modes!"<<endl;                                                      
                                                                                  
                     pD3D->Release(); 
                     delete[] pAdapt //<- wenn schon denn schon

                     delete[] pMode; 
                      
                     return 1; 
                } 


für was überhaupt die beiden arrays für adapter und modi!?
du beschreibst sie und löscht sie dann wieder...
das ganze ginge auch ohne.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

5

17.08.2005, 21:34

ich hab mir mal ein paar minuten genommen und was gemacht von dem ich denk, dass es dem entspricht was du haben willst:

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
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <d3d9.h>



int main()
{

    IDirect3D9* pd3d = Direct3DCreate9( D3D_SDK_VERSION );

    int adapterCount = pd3d->GetAdapterCount();

    cout << adapterCount << " adapters found" << endl;

    D3DADAPTER_IDENTIFIER9  aid;
    char                    dummy[512];

    for( int i = 0; i < adapterCount; i++ )
    {

        pd3d->GetAdapterIdentifier( i, 0, &aid );

        sprintf( dummy, "Adapter-ID = %i\n"
                        "Name = %s\n"
                        "Driver = %s\n"
                        "DriverVersion = %i\n",
                        i,
                        aid.Description,
                        aid.Driver,
                        aid.DriverVersion );

        cout << dummy << endl << endl;

        int modeCount = pd3d->GetAdapterModeCount( i, D3DFMT_X8R8G8B8 );

        cout << "found " << modeCount << " available 32bit X8R8G8B8 displaymodes for adapter" << i << endl;

        for( int j = 0; j < modeCount; j++ )
        {

            D3DDISPLAYMODE dm;

            pd3d->EnumAdapterModes( i, D3DFMT_X8R8G8B8, j, &dm );

            sprintf( dummy, "%i x %i  @ %i Hz", dm.Width, dm.Height, dm.RefreshRate );

            cout << dummy << endl;

        }

        cout << endl << endl;

    }

    while( !_kbhit() ) {};

    return 0;
}

koschka

Community-Fossil

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

6

17.08.2005, 22:19

3 posts hintereinander => dot führt Selbstgespräche ;).

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

7

18.08.2005, 00:39

lol, ich hatte grad nix zu tun...

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

18.08.2005, 00:42

Willste Arbeit haben? Ich habe immo mehr als genug^_^, warum das allerdings immer schubweise kommen muss....
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

JossBoss

Treue Seele

  • »JossBoss« ist der Autor dieses Themas

Beiträge: 182

Wohnort: Luxemburg

  • Private Nachricht senden

9

20.08.2005, 12:41

danke läuft jetz, zu den Speicherreservierungen, ich wollt das Programm erst mal irgendwie aus dem Buch nachproggen, und da hat david es auch so gemacht ;p

Werbeanzeige