10
votes

Où puis-je apprendre à interfacer avec une carte graphique à l'aide de C ++?

J'apprends C ++ en ce moment et j'aimerais commencer à interfacer avec une carte graphique et de jouer avec les bases des graphiques 3D. Je ne l'ai pas trouvé dans mon livre ni dans des requêtes sur Internet, et je n'ai absolument aucune idée où commencer avec cela. Code C ++ peut-il exécuter sur une carte graphique une fois qu'il est compilé? Je comprends que j'accède à la transformation du GPU via OpenGL mais je ne suis pas clair, que ce ne soit qu'un bibliothèque pour accéder via C ++ (et probablement d'autres langues) pour réussir les fonctions au GPU ou si elle est spécifique à GLSL. Alors, qu'est-ce que OpenGL, et comment puis-je l'utiliser conjointement avec C ++ afin de réussir le traitement au GPU? Y a-t-il d'autres moyens plus directs ou flexibles de travailler avec C ++ et une carte graphique?


0 commentaires

6 Réponses :


2
votes

Le lieu définitif pour OpenGL Nehe . Les tutoriels ici vous feront commencer avec les bases.


3 commentaires

NEHE est très, très comme très obsolète, malheureusement. Il existe des didacticiels rafraîchis sur NEHE.GAMEDV.NET/WIKI/NewOsons.ashx et Cela devrait être la première place pour diriger les gens.


Merci pour la mise à jour. Bien que déchargée, c'est l'ensemble des tutoriels les plus complets que j'ai trouvés et je crois encore quelque peu utiles pour apprendre les bases.


Si l'objectif est de "voir un triangle rotation du triangle dès que possible", les anciens tutoriels NEHE ont l'air bien - mais malheureusement, ils donnent beaucoup de mauvaises habitudes à partir de la première leçon. Je connais un ensemble décent de didacticiels à jour de OpenGL 3, mais seulement en polonais, malheureusement - je dois demander à l'auteur s'il prévoit des traductions :). En outre, il existe des tutoriels de phare3D qui ne sont pas sous la forme d'un guide, mais sont vraiment utiles. Il est clair que la nécessité d'un nouveau guide OGL complet.



7
votes

OpenGL et DirectX font l'interface de la carte graphique pour vous.

Vous pouvez écrire vous-même le code de niveau bas, mais je recommanderais d'abord de mieux comprendre les bases.

Une fois que vous avez fait que vous puissiez regarder vous écrire vous-même des pilotes graphiques, mais ne vous attendez pas à battre la performance des équipes de fabricants de cartes de développeurs.


0 commentaires

1
votes

Mettez simplement, OpenGL est une bibliothèque qui communique avec le pilote de votre carte graphique. Vous appelez OpenGL Fonctions en C ++, ce qui aboutit à des commandes envoyées au GPU pour le traitement. Votre code C ++ est toujours exécuté sur la CPU, y compris tous vos appels de bibliothèque OpenGL, mais les appels sont traduits en commandes comprises par le pilote de la carte graphique.

Dans le passé, le GPU avait un pipeline de fonction fixe et OpenGL a agi en tant que machine d'état où vous pour activer et désactiver certaines fonctionnalités telles que la spécification de la position d'une source de lumière ou la manière dont une image doit être mappée sur un objet. OpenGL est toujours une machine à états, mais avec programmable Shaders Vous écrivez des programmes dans une langue semblable à C ( GLSL) et utilisez des fonctions OpenGL pour instruire le pilote de compiler et de relier les programmes et de les exécuter sur le GPU.

Un bon endroit pour commencer à en savoir plus sur OpenGL est OpenGL Superbible . La dernière version ne couvre pas les anciens pipelines de fonction fixe (où vous ne pouviez pas écrire des shaders) et nécessite une carte vidéo quelque peu décente.


1 commentaires

"Votre code C ++ est toujours exécuté sur le GPU" - je pense que tu veux dire CPU :-)



9
votes

OpenGL est une bibliothèque. Votre code C ++, qui compile dans le code de la machine (pour votre CPU, pas GPU), appelle les fonctions OpenGL, qui envoient des données à votre carte graphique (GPU). La carte graphique interprète ces données et l'utilise pour faire tout ce que vous avez demandé de faire. Le GPU ne fonctionne pas aucun de votre code C ++.

GLSL (langage d'ombrage OpenGL) est une langue utilisée pour instruire ce que font les shaders du GPU. Notez que le nom est un peu mal informatique, car le code écrit dans des langues d'ombrage fait beaucoup plus que l'ombrage de nos jours. En règle générale, vous écrirez votre code GLSL beaucoup comme si vous écrivez votre code C ++, puis utilisez OpenGL appels pour compiler le code GLSL, puis utilisez plus d'appels OpenGL pour demander à la CPU d'utiliser les programmes de shader.


CPU

Code C ++ appels OpenGL Fonctions Appels Code pilote graphique , qui transmet des instructions au matériel GPU via le matériel.

GPU

Interprète les signaux matériels reçus du pilote graphique pour exécuter ses propres programmes internes. Cela peut inclure des programmes GLSL compilés, qui sont également envoyés de la CPU de la même manière.


Remarque: vous pouvez remplacer "Ouvrir les fonctions GL" par "Fonctions DirectX" et "GLSL" avec une autre langue d'ombrage et le diagramme est identique.


0 commentaires

0
votes

Pour commencer, je vous recommanderais d'utiliser l'API de la glutte (GL Utility Toolkit). Regarde-le ici ... http://www.opengl.org/resources/libres/ Glut /

Je pense que c'est la meilleure façon de démarrer la programmation graphique à l'aide de OpenGL.


2 commentaires

Je recommanderais qu'il (et vous, et tout le monde) évite d'éviter que la peste est. Il existe de nombreux cadres plus récents, plus utilisables et mieux conçus avec beaucoup moins de bugs.


D'accord. Il y a beaucoup de meilleures fraches (GLFW est cool) mais pour une collecte complète de démarrage tient un appel.



0
votes

Êtes-vous intéressé par l'utilisation de GPU pour ...

graphiques : Vous avez deux interfaces, OpenGL (Multiplatform) et Direct3D (Windows), tant pris en charge par pratiquement tous les pilotes GPU.

Calculs : L'interface la plus courante est Cuda par NVIDIA (uniquement pour les cartes GeForce). Il y a aussi Opencl (devrait être soutenu partout, mais je ne suis pas sûr de l'état actuel sur GeForces; tout OK sur ATI) et certaines solutions propriétaires par AMD / ATI avec lequel je ne connais pas.

Choisissez ce que vous avez envie et commencez à l'apprendre, il y a beaucoup d'exemples et de tutoriels pour que l'une des informations ci-dessus soit trouvée en ligne.


0 commentaires