2013-08-06 2 views
3

Quand je utilisation "glGetString (GL_VERSION)" et "glGetString (GL_SHADING_LANGUAGE_VERSION)" pour vérifier la version OpenGL sur mon ordinateur, je suis les informations suivantes:carte NVIDIA Optimus sous OpenGL ne bascule pas

3.1.0 - construire 8.15.10.2538 pour GL_VERSION

1.40 - Intel créer 8.15.10.2538 pour GL_SHADING_LANGUAGE_VERSION

Quand je courais "GPU Caps Viewer Geeks3D", il montre la version OpenGL de mes cartes graphiques (NVS 4200M) sont

GL_VERSION : 4.3.0

version GLSL: 4,30 NVIDIA via le compilateur Seizième

Est-ce que cela veut dire ne supporte que certains OpenGL 4.3.0 mes cartes graphiques fonctions, et je ne peux pas créer 4.3 contexte?

+0

Ceci est un problème avec votre ordinateur portable ne pas passer à l'aide de la puce NVIDIA; c'est à la place en utilisant la puce Intel. Recherchez "OpenGL" et "Optimus". –

+0

@Nicol Bolas Merci beaucoup! Je modifie les paramètres sur le panneau de configuration NVIDIA. – Amy

Répondre

13

Votre carte graphique est une carte NVIDIA Optimus. Cela signifie qu'il choisit "automatiquement" entre le graphique Intel intégré et le GPU dédié. Les graphiques Intel ne supportent que jusqu'à 3.1 tandis que le GPU dédié supporte 4.3. En fonction de celui qui est choisi, vous n'aurez de support que pour cette version. Le seul problème avec Optimus est qu'il ne récupère automatiquement que DirectX, CUDA, C++ AMP et OpenCL.

Cela a causé beaucoup confusionandfrustration.

Il y a quelques solutions pour forcer le GPU dédié à utiliser:

  1. Le plus simple, forcer votre application à utiliser le GPU dédié via le panneau de configuration NVIDIA. C'est généralement une solution provisoire, car cela ne fonctionnera que sur votre machine.
  2. Appelez un petit bout de (ou un lien vers) CUDA ou OpenCL au début de votre programme pour l'amener à déclencher le passage à la carte dédiée. Cela ajoute une dépendance à CUDA ou OpenCL, cependant.
  3. Exportez la variable globale _declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;. C'est généralement la meilleure solution, cependant, selon la langue que vous utilisez, vous ne pourrez peut-être pas exporter les variables globales.

NVIDIA a publié un document sur cette opération: http://developer.download.nvidia.com/devzone/devcenter/gamegraphics/files/OptimusRenderingPolicies.pdf

+0

Merci beaucoup! Je résous le problème en suivant votre première suggestion. Je vais lire le document et vérifier les autres solutions plus tard. – Amy

Questions connexes