2013-07-05 3 views
0

J'ai une application OpenGL qui utilise shaders.Sur le bureau où j'ai une carte graphique et le pilote installé fonctionne très bien, mais quand le GPU est désactivé, mon application ne fonctionne pas et se bloque après la création de la fenêtre. Je les ententes ci-dessous et doutes:GPU, Shader Compiler et application OpenGL

  • Le compilateur GLSL est fourni par le fournisseur de GPU, de sorte que l'application se bloque quand il n'y a pas de pilote de GPU trouvé. Cela signifie-t-il que sur un système sans GPU, les applications OpenGL utilisant des shaders ne fonctionneront pas? Ma compréhension était que le GPU ne fait qu'améliorer le fps et que l'application devrait aussi fonctionner sans GPU.

Répondre

0
  • Le compilateur GLSL est fourni par le fournisseur de GPU, de sorte que l'application se bloque quand il n'y a pas de pilote de GPU trouvé.

Eh bien, techniquement le compilateur GLSL fait partie d'une mise en œuvre conforme de la version OpenGL assez haut. Mais ce n'est que de gros mots pour essentiellement, ce que vous avez dit. Donc: Oui.

  • Est-ce que cela signifie que le système sans GPU, les applications OpenGL qui utilise shaders ne fonctionne pas?

Vous avez besoin d'une implémentation OpenGL capable des fonctionnalités dont votre programme a besoin. La plupart des implémentations OpenGL sont réalisées sous la forme d'une combinaison de GPU et d'une couche de pilote (thin) qui permet de parler au GPU par OpenGL.

  • Je crois comprendre que le GPU ne fait que renforcer les fps et l'application devrait fonctionner sans GPU aussi bien.

Eh bien, cette notion est erronée. Un GPU n'est pas un simple "exhausteur de performance".Un GPU est une plate-forme de traitement complète et toutes les versions OpenGL sont conçues pour être implémentées en utilisant ce type de processeur, que sont les GPU. Il existe des émulations logicielles, mais celles-ci sont lentes et souvent incomplètes. En fait, OpenGL a toujours été supposé être implémenté en utilisant une sorte de GPU. La toute première version d'OpenGL était en fait une API d'espace utilisateur 1: 1 littérale des registres et des commandes des rasteriseurs graphiques matériels SGI; Même certains des premiers jetons OpenGL ont des valeurs numériques placées dans les registres de contrôle du matériel SGI.

0

Pour exécuter l'application OpenGL, vous devez avoir un pilote qui comprend les appels OpenGL, vous pouvez lancer votre application sans GPU que si vous installez le pilote émule du logiciel. L'un est le Mesa AFAIK il y a une version Windows de Mesa aussi, un autre est Swiftshader de transgaming, mais ce dernier est un logiciel commercial.

1

Comme indiqué précédemment, quelqu'un doit fournir une implémentation OpenGL sur votre plate-forme/système cible. Habituellement, cela est fait par le pilote graphique, mais il existe aussi une implémentation logicielle (comme mesa). De plus, pour que votre application s'exécute, vous devez vérifier la disponibilité de certaines fonctionnalités OpenGL car certaines choses, comme les shaders, peuvent ne pas être disponibles pour chaque pilote/implémentation/matériel. En d'autres termes: la disponibilité d'une implémentation OpenGL (généralement une bibliothèque partagée) n'indique pas la disponibilité des shaders. À ma connaissance, la plupart des implémentations ne fournissent pas de «repli logiciel» si aucune GPU n'est disponible. Mesa le fait mais "seulement" fournit OpenGL 3.1 et je ne suis pas sûr de la qualité du support du shader pour le rendu logiciel. Je pense que c'est un travail en cours.