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

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

1

24.01.2010, 16:26

Komische Modiwerte

Hallo zusammen.

Bin gerade daran einwenig mit den Modi und Formaten zu spielen.

Hierbei bin ich auf einen komischen Effekt gestossen. Wo ich ned weiss ob meine Graka Treiber mit dem mitgelieferten SDK ned klar kommen, oder was da los ist.

Hier man der Code für Auflistung der Adapter :

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

#pragma comment(lib, "d3d9.lib")

#define APP_OK 0
#define APP_NOK 1

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd)
{
    // erstellen der D3D IUnknown Schnittstelle

    PDIRECT3D9 pd3d = Direct3DCreate9(D3D_SDK_VERSION);
    
    if( !pd3d )
    {
        // Fehlerausgabe wenn die Schnittstelle nicht erstellt werden konnte.

        MessageBox(NULL, "Es ist ein Fehler beim erstellen der Direct3D Schnittstelle aufgetretten", "FEHLER", MB_OK | MB_ICONEXCLAMATION);
        return APP_NOK;
    }
    
    int iAdapterCount = pd3d->GetAdapterCount();
    D3DADAPTER_IDENTIFIER9* pAdapterIdentifier = new D3DADAPTER_IDENTIFIER9;

    for( int adapterIndex = 0 ; adapterIndex < iAdapterCount ; adapterIndex++ )
    {
        if( FAILED ( pd3d->GetAdapterIdentifier( adapterIndex, 0, pAdapterIdentifier ) ) )
        {
            MessageBox(NULL, "Es ist ein Fehler beim laden des Adapters aufgetretten", "FEHLER", MB_OK | MB_ICONEXCLAMATION);

            pd3d->Release();
            delete pAdapterIdentifier;
            return APP_NOK;
        }
        
        //Ausgeben der Anzahl Adapter

        char caAdapterCount[100];
        sprintf_s(caAdapterCount, "Die Anzahl gefundener Adapter ist : %d", iAdapterCount);
        MessageBox(NULL, caAdapterCount , "INFO", MB_OK | MB_ICONEXCLAMATION);

        //erstellen der Ausgabe für die Adapterinformationen

        char caAdapterOutput[1024];
        sprintf_s(caAdapterOutput, "Drivername : %s\nDriver : %s\nDriverversion : %d\n\nBeschreibung : %s", 
            pAdapterIdentifier->DeviceName, pAdapterIdentifier->Driver, pAdapterIdentifier->DriverVersion, pAdapterIdentifier->Description );
        MessageBox(NULL, caAdapterOutput, "Gefundener Adapater", MB_OK | MB_ICONEXCLAMATION);
    }
    pd3d->Release();
    delete pAdapterIdentifier;
    return APP_OK;
}


Das komische ist, das bei der Ausgabe "Drivername : \\.\DISPLAY1"
und "Driverversion : 656076" rauskommt.

Hat da wer ne Idee?


Greez Mischu[/img]

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

2

24.01.2010, 16:35

Noch ein komischer Effekt

Hier habe ich noch was gebaut für die Modi verschiedener Formate.

Da ich bei meiner ATI 4870x2 eigentlich ein paar unterstütze Formate erwartet hatte ;). Habe ich nachdem ich keine Modi für im Array enthaltenen Formate erhalten habe, mal einen Test mit der aktuellen Modi gemacht ( in der mit "Test kommentiert )

Das Problem ist das dort negative int werte erhalte, was meines Wissen bei unsigned int nicht sein sollte :D

Diesen Effekt find ich fast noch ulkiger...hehe

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
#include<Windows.h>
#include<stdio.h>
#include<d3d9.h>
#include<list>

#pragma comment(lib, "d3d9.lib")

#define APP_OK 0
#define APP_NOK 1

using namespace std;

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, char* pcCmdLine, int iShowCmd )
{
    D3DFORMAT aFormats [] = {D3DFMT_X8R8G8B8, D3DFMT_R8G8B8, D3DFMT_R5G6B5, D3DFMT_X1R5G5B5};

    // erstellen der D3D IUnknown Schnittstelle

    PDIRECT3D9 pd3d = Direct3DCreate9(D3D_SDK_VERSION);
    
    if( !pd3d )
    {
        // Fehlerausgabe wenn die Schnittstelle nicht erstellt werden konnte.

        MessageBox( NULL, "Es ist ein Fehler beim erstellen der Direct3D Schnittstelle aufgetretten", "FEHLER", MB_OK | MB_ICONEXCLAMATION );
        return APP_NOK;
    }
    
    int iAdapterCount = pd3d->GetAdapterCount();

    D3DDISPLAYMODE stAdapterDisplayMode;

    if( iAdapterCount == 1 )
    {           
        // char[] für die Ausgabe der Modi des einzelnen Foromate

        char caAdapterModeOutput[50000];

        for each( D3DFORMAT nextFormat in aFormats )
        {
            // ermittle alle Modi für das aktuelle Format

            int modeCount = pd3d->GetAdapterModeCount( iAdapterCount, nextFormat );

            // test

            char caAnzahlModi[1024];
            sprintf_s(caAnzahlModi, "Anzahl Gefundene Modi : %d für Format : %d", modeCount, (UINT) nextFormat );
            MessageBox( NULL, caAnzahlModi, "Anzahl Gefundene Modi", MB_OK | MB_ICONEXCLAMATION );
            //


            for( int nextMode = 0 ; nextMode < modeCount ; nextMode++ )
            {
                // ermittle Moduseigenschaften des nächsten Modus

                pd3d->EnumAdapterModes( iAdapterCount, nextFormat, nextMode, &stAdapterDisplayMode );

                // erstellen der Ausgabe für die Video Modi der gefundenen Adapter

                sprintf_s(caAdapterModeOutput, "Format : %d\nResolution : %d x %d\nRefresh : %d\n\n\n", 
                    stAdapterDisplayMode.Format, stAdapterDisplayMode.Width, stAdapterDisplayMode.Height, stAdapterDisplayMode.RefreshRate );
            }

            // noch den aktuellen mode anhängen

            pd3d->GetAdapterDisplayMode ( iAdapterCount, &stAdapterDisplayMode );
            sprintf_s(caAdapterModeOutput, "Aktuell\n--------\n\nFormat : %d\nResolution : %d x %d\nRefresh : %d\n\n\n",
                stAdapterDisplayMode.Format, stAdapterDisplayMode.Width, stAdapterDisplayMode.Height, stAdapterDisplayMode.RefreshRate );
        }
        MessageBox( NULL, caAdapterModeOutput, "Gefundene Modi", MB_OK | MB_ICONEXCLAMATION );
    }
    pd3d->Release();
    return APP_OK;
}

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

3

26.01.2010, 20:10

Von mir aus kann man es löschen...

2 Sachen die ned passieren dürften sind passiert und viola hehe

;)

4

26.01.2010, 20:40

Nö, nicht löschen! ;)

Kannst ja deinen Monolog hier fortsetzen und Interessierten erklären,
was du falsch gemacht hast!?

Mischu

Frischling

  • »Mischu« ist der Autor dieses Themas

Beiträge: 21

Wohnort: Olten (Schweiz)

Beruf: Javaentwickler (swissinfo.ch)

  • Private Nachricht senden

5

26.01.2010, 21:14

Achso...oki ;)

Also beim 1. code snipped wollte ich eigentlich den Graka Namen ausgeben. Der steht jedoch in struct-variablen "Description" und ned in "DeviceName".

C-/C++-Quelltext

1
2
3
4
5
char caAdapterOutput[1024];
        sprintf_s(caAdapterOutput, "Drivername : %s\nDriver : %s\nDriverversion : %d",
            pAdapterIdentifier->DeviceName, pAdapterIdentifier->Driver, pAdapterIdentifier->DriverVersion );
        MessageBox(NULL, caAdapterOutput, "Gefundener Adapater", MB_OK | MB_ICONEXCLAMATION);
 



Und beim 2. ein ganz peinlicher :D. Da hab ich anstatt dem Adapter Identifier den AdapterCount (iAdapterCount) übergeben...also 1 anstatt 0...was dazu führte das die struct Werte ned initialisiert wurden ;)

C-/C++-Quelltext

1
2
3
4
// noch den aktuellen mode anhängen

            pd3d->GetAdapterDisplayMode ( iAdapterCount, &stAdapterDisplayMode );
            sprintf_s(caAdapterModeOutput, "Aktuell\n--------\n\nFormat : %d\nResolution : %d x %d\nRefresh : %d\n\n\n",
                stAdapterDisplayMode.Format, stAdapterDisplayMode.Width, stAdapterDisplayMode.Height, stAdapterDisplayMode.RefreshRate );



Das war der ganze Zauber ;)[/code]

Werbeanzeige