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

29.08.2014, 21:43

DirectX erkennt Grafikkarte nicht

Hallo,

Ich habe versucht, die Übungsaufgabe aus dem Buch zu lösen, in welcher man alle Adapter abfragen soll und von denen die Beschreibung, Treiber, usw. ausgeben soll.

Dabei habe ich aber das Problem, dass er meine Grafikkarte (bzw Chip meines Laptops) nicht auflistet.
Auch wenn ich das bereits fertige Programm (vom Update-Archiv für das Buch) verwende, mit welchen man vom Benutzer die DirectX Einstellungen vornehmen kann, habe ich unter Adapter nur den Chip von Intel, der von NVIDIA wird mir aber nicht angezeigt. Kann mir jemand sagen, woran das liegt? Ich würde schon lieber die Grafikkarte/Chip ansprechen und nicht den Intel-Chip.

Folgenden Code habe ich verwendet:

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
#include <D3D9.h>
#include <iostream>

int main(char argc, char*argv)
{
    PDIRECT3D9 dx = Direct3DCreate9(D3D_SDK_VERSION); //Pointer auf die IDirect3D9 Schnittstelle
    
    int adapter_Anz = dx->GetAdapterCount();

    for (int i = 0; i < adapter_Anz; i++) {
        D3DADAPTER_IDENTIFIER9 adapter_Infos;
        dx->GetAdapterIdentifier(i, NULL, &adapter_Infos);
        std::cout << "Adapter " << i << " gefunden.\n" <<
            "Beschreibung:    " << adapter_Infos.Description << std::endl <<
            "Treiber:         " << adapter_Infos.Driver << std::endl <<
             std::endl << std::endl;
    }

    dx->Release();

    std::cin.get();
    return 0;
}


Liebe Grüße,
Ombalat

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

2

29.08.2014, 22:46

Nur der Intelchip, aber nicht der von NVidia? Ist das ein Laptop mit Optimus?
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

3

29.08.2014, 23:19

Energiesparmodus aktiviert? Dann ist die Graka eventuell deaktiviert.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

4

30.08.2014, 02:55

Danke schon einmal für die Antwort.

Nur der Intelchip, aber nicht der von NVidia? Ist das ein Laptop mit Optimus?


Ja genau, ich bekomme in der Auflistung nur den Intelchip, aber nicht den von NVidia. Es ist ein Acer Laptop und die eine NVidia Geforce GT 620M
EDIT: Bezüglich Optimus. Ja, hat er, habe gerade den Aufkleber am Laptop gesehen :| kann man die iwie trotzdem erkennen lassen? Ich brauch ja die Adapter-ID, um die GrafKa anzusprechen (Also um die Schnttstelle zu erzeugen, oder wie das hieß)

Energiesparmodus aktiviert? Dann ist die Graka eventuell deaktiviert.


Nein, der läuft im Ausbalanciert-Modus. Ich habe es aber auch schon auf Höchstleistung probiert, wird auch da nicht aufgelistet. Im Gerätemanager ist die Karte aber verzeichnet (Genauso wie der von Intel unter Grafikkarte)

Legend

Alter Hase

Beiträge: 731

Beruf: Softwareentwickler

  • Private Nachricht senden

5

30.08.2014, 09:06

Probier mal dein Spiel im Explorer zu starten per Kontextmenü. Dort sollte ein Eintrag "Mit Grafikprozessor ausführen" sein unter dem auswählen kannst das Spiel mit dem "Nvidia Hochleistungsprozessor" auszuführen. Guck mal ob dein Spiel dann die Nvidia GPU sieht. Wahrscheinlich sieht es dafür dann die Intel GPU nicht mehr.
"Wir müssen uns auf unsere Kernkompetenzen konzentrieren!" - "Juhu, wir machen eine Farm auf!"

Netzwerkbibliothek von mir, C#, LGPL: https://sourceforge.net/projects/statetransmitt/

6

30.08.2014, 12:20

Wird denn dein Gerät im DirectX Caps Viewer angezeigt? (dxcapsviewer.exe)

Wenn nicht, unterstützt dein Gerät oder der Treiber deines Gerätes keine (Hardware Acceleration mit) Direct3D9 mehr und hat scheinbar auch kein Support mehr für das entsprechende Feature level (kann ich mir kaum vorstellen). Bei letzterem mal versuchen, den Treiber zu updaten.
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

7

30.08.2014, 13:59

Probier mal dein Spiel im Explorer zu starten per Kontextmenü. Dort sollte ein Eintrag "Mit Grafikprozessor ausführen" sein unter dem auswählen kannst das Spiel mit dem "Nvidia Hochleistungsprozessor" auszuführen. Guck mal ob dein Spiel dann die Nvidia GPU sieht. Wahrscheinlich sieht es dafür dann die Intel GPU nicht mehr.


Ich bin mir nicht sicher, ob ich weiß was du meinst. Falls du meinst, dass ich auf die EXE rechtsklicken soll und dann in das Kontextmenü schauen soll, habe ich diese Option nicht

Wird denn dein Gerät im DirectX Caps Viewer angezeigt? (dxcapsviewer.exe)

Wenn nicht, unterstützt dein Gerät oder der Treiber deines Gerätes keine (Hardware Acceleration mit) Direct3D9 mehr und hat scheinbar auch kein Support mehr für das entsprechende Feature level (kann ich mir kaum vorstellen). Bei letzterem mal versuchen, den Treiber zu updaten.


Ich habe gerade nachgeschaut. Ich habe das Gerät nichtmal im dxdiag. Im dxcapsviewer habe ich die NVIDIA nur unter 1.1 Devices (Screenshot beigefügt)? Kann mir das nicht erklären, der Laptop wurde so ausgeliefert, ich habe nichts verändert. Die Treiber sind laut NVIDIA Geforce Experience auf aktuellem stand. Heißt das jetzt, ich habe damals einen Laptop mit vollkommen sinnloser GrafKa gekauft? Ich habe extra den gekauft weil ich ne NVIDIA wollte :/
»Ombalat« hat folgende Dateien angehängt:
  • dxdiag.bmp (977,95 kB - 83 mal heruntergeladen - zuletzt: 11.01.2024, 23:35)
  • dxcapsviewer.bmp (904,71 kB - 99 mal heruntergeladen - zuletzt: 26.02.2024, 17:04)

9

30.08.2014, 15:49

Oke, hatte auf der NVidia Seite was zu Optimus gelesen, aber der von Wiki ist mMn verständlicher, danke :)
Also verstehe ich das richtig, ich erstelle einfach ganz normal die Geräteschnittstelle für den Intel Chip und die NVidia wird bei bedarf eifach automatisch dazugeschalten, ich kann diese also nicht direkt ansteuern über eine Geräte-Schnittstelle.

10

30.08.2014, 16:31

Wenn du unbedingt DX9 verwenden möchtest, wirst du darauf zurückgreifen müssen.

Aber wenn in den DXcaps das Gerät als DXGI adapter aufgelistet ist, kannst du mit DirectX11 anfangen und DXGI zur Auswahl des Adapters nutzen. Und schon tut alles. ;)
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

Werbeanzeige