Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Apr 18, 2024 05:49

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: 2 Grafik-Chips
BeitragVerfasst: Di Jan 28, 2014 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 13, 2011 22:05
Beiträge: 218
Programmiersprache: Lazarus/FPC
Hallo Leute,

Folgendes Problem: ich hab bisher meine ganzen OpenGL-Programme an Stand-PCs programmiert. heute hat sich ergeben das ich mal auf den Laptop meiner Freundin gewechselt bin um weiterzuarbeiten. Einige OpenGL-Befehle wie wglSwapIntervalEXT(0); machten hier Probleme und ich hab schnell rausgefunden dass der Laptop 2 Grafik-chips intus hat, eine AMD Radeon HD 6700M und so ein lahmes Intel-Teil.
Das Problem ist die OpenGL-Anwendung greift automatisch auf den Intel-Chip zu was die Frames/Sek. bei meiner Anwendung gelinde gesagt in den Keller wirft und teils Texturen total falsch darstellt.
Gibt es irgendeine programmiertechnische Möglichkeit dem PC mitzuteilen er solle immer den AMD-Chip verwenden oder ist man gezwungen das manuell in Windows einzustellen?

lg Ida

_________________
Ich teile manchmal heimlich durch Null. - Alber Einstein


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Mi Jan 29, 2014 08:03 
Offline
DGL Member

Registriert: So Dez 29, 2013 12:38
Beiträge: 9
Programmiersprache: C++, C#
Hi,

ich komme zwar aus der Dx ecke(in der ich aber auch schon ewig nix mehr gemacht habe), aber da ist meines Wissens nach möglich die Grafikkarte auszuwählen(Also sollte es in Opengl wohl auch gehen :-) ).

Zweitens, ich hatte auch mal so ein Notebook mit zwei Chips (1 schwacher, 1 "starker"), wie bei dir.
Es gab da die Möglichkeit !pro Anwendung!, im Treiber einzustellen, welchen Chip er nehmen sollte. Wenn man aber nix eingestellt hatte, dann hat der Programme immer auf den "Starken" Chip gelassen.

Ps. Ich würde mal VERMUTEN, das du gucken musst, wie du dein DC erstellst, bzw. dort schon entschieden wird, auf welche Grafikkarte er geht.

Viele Grüße,
Willi


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Mi Jan 29, 2014 12:59 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
DirectX ist eine Library bei dem mehrere Treiber für Direct3D existieren können.
Bei OpenGL gibt es dagegen einen Treiber und keinen anderen. Außer wenn mehrere Grafikkarten vom selben Hersteller(Treiber) sind, denke ich, wird es leider keine Möglichkeit geben, die GPU selbst auszuwählen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Mi Jan 29, 2014 16:35 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 31, 2002 19:41
Beiträge: 1278
Wohnort: Bäretswil (Schweiz)
Programmiersprache: Pascal
Wen ich mich zurückerinnern mag, gab es zu Voodoo-Zeiten Games bei denen man die Grafikeinheit auswählen konnte. Da waren zum Teil auch OpenGL-Games dabei.

_________________
OpenGL


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Do Jan 30, 2014 16:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
OpenglerF hat geschrieben:
Bei OpenGL gibt es dagegen einen Treiber und keinen anderen. Außer wenn mehrere Grafikkarten vom selben Hersteller(Treiber) sind, denke ich, wird es leider keine Möglichkeit geben, die GPU selbst auszuwählen.

Wer hat denn dieses Gerücht in die Welt gesetzt? ;)

Es gibt natürlich nur eine OpenGL32.dll. Diese liefert auch die komplett API zurück. Das heißt aber nicht, dass diese DLL gleich der OpenGL Treiber ist. Die installierten Treiber registrieren sich innerhalb der Registry. Wenn die OpenGL32.dll jetzt einen Kontext erstellen soll, dann wird anhand des aktiven Displays (Zu welchem das Fenster gehört) der Treiber ausgewählt und nachgeladen. Alle Aufrufe werden dann entsprechend an diese DLL weitergereicht. Bei AMD ist das die "atioglxx.dll" aus dem System32 Verzeichnis. Die wird im Hintergrund automatisch in die Anwendung geladen.

Hätte eigentlich die Idee gehabt, dass man sich mit EnumDisplayDevices das passende Gerät auswählt und dann dafür einen DC erstellt und mit dem dann den Kontext. Leider ist die OpenGL32.dll da ziemlich dämlich und benutzt einen API Befehl der wieder nur das primäre Gerät zurück liefert (oder einen Fehler schmeißt). Und ohne Hacks, die scheinbar nicht mal zuverlässig funktionieren, ist es wohl nicht möglich.
http://www.opengl.org/discussion_boards/showthread.php/173030-How-to-use-OpenGL-with-a-device-chosen-by-you

Obendrein. Woher weiß das Programm, welcher der gefundenen Gerät das "Richtige" ist? Das kann eigentlich auch nur der Benutzer selbst entscheiden. Da wird man wohl nicht drumherum kommen, dass man das im Windows bzw. in den Einstellungen des Treibers erledigt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Do Jan 30, 2014 18:58 
Offline
DGL Member

Registriert: Do Dez 29, 2011 19:40
Beiträge: 421
Wohnort: Deutschland, Bayern
Programmiersprache: C++, C, D, C# VB.Net
Deinen Ausführungen nach trifft meine Aussage in der Praxis grundlegend trotzdem zu. Auch wenn sie in der Theorie nicht so ganz stimmen mag.
Bei OpenGL ist das jedenfalls prinzipiell nicht so vorgesehen. Ich habe noch nie eine OpenGL Anwendung gesehen, in der man die GPU auswählen kann. Bei Dx Anwendungen ist das absoluter Standard.

Das Interface nach außen ist auf jeden Fall durch die "OpenGL32.dll" festgelegt. Verschiedene Treiber würden aber auch verschiedene Einsprungpunkte benötigen, je nach Featurelevel und Extensions.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: 2 Grafik-Chips
BeitragVerfasst: Do Jan 30, 2014 20:03 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Dafür gibt es aktuell leider nur herstellerspezifische Extensions, sowohl von NVidia als auch von AMD (ATI) :

WGL_NV_gpu_affinity
WGL_AMD_gpu_association

(beides WGL, unter Linux ist das ja einfach machbar afair)

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 23 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.045s | 17 Queries | GZIP : On ]