En savoir OpenGL moderne


Ok ... Alors vous voulez apprendre OpenGL moderne. Très Bien! Mais ce que cela signifie réellement et quelles options sont disponibles? Vous devez acheter des livres coûteux sur cette technologie, ou peut-être quelques tutoriels en ligne de base suffisant?

Dans cet article, je vais essayer de répondre à certaines des questions ci-dessus et de créer un guide pour un monde merveilleux de la programmation graphique en utilisant OpenGL.




Commençons!

Pourquoi moderne?

La première question que je veux répondre est parce qu'il est 'OpenGL moderne »un terme, il est« vieux OpenGL ainsi?

Fondamentalement moderne signifie «aide pipeline graphique programmable," vieux signifie «pipeline fixe."

Quelle est la différence? Ce est un vaste sujet, mais pour l'instant je pense que ce est bon de savoir que le pipeline a été fixé comme une boîte noire. Vous avez saisi les données de haut à l'avant (entrée) et triangles avez écrit le framebuffer (l'écran) à la fin. On pourrait bien sûr optimiser cette case pour vos besoins, mais à un certain stade, il ne était pas assez.

Pipeline programmable est plus comme une boîte blanche, transparente, où non seulement vous apporter les données d'entrée et attendre le résultat, mais il est possible d'insérer/modifier les mécanismes internes. Il ya une forme générale de l'oléoduc, mais beaucoup de pièces sont entièrement contrôlé par vous - grâce à la shaders.

Shader est un petit programme qui permet de calculer des choses différentes et il est géré par le GPU. Peut transformer sommets, calculer la couleur de fragments, supprimer ou ajouter plus de triangles et encore plus.

Pour illustrer cette idée, je ai préparé deux images:

Bien que les images ci-dessus sont très simplifiées, ils montrent que le pipeline programmable est beaucoup plus souple et plus de contrôle dans les mains d'un programmeur. Merci shaders vous pouvez créer beaucoup d'effets graphiques qui ne étaient pas possibles avec un tuyau fixe.

Actuellement, avec les nouvelles versions de l'API graphique (comme OpenGL ou DirectX) nous obtenons de plus en plus de contrôle sur le GPU. Il est donc important d'apprendre la façon moderne.

OpenGL Versions Grande

Version Des changements importants 2.0 - Septembre 2004 OpenGL Shading Language officiellement normale. Pixel Buffer Objects, sRGB 3.0 - Août 2008 Liste Déconseillé fonctions, objets de mémoire tampon de trame, textures en virgule flottante, transformer commentaires, profil de base, geometry shaders, des objets de synchronisation 4.0 - Mars 2010 dispositifs cibles qui soutiennent DirectX 11: shaders Tesselation, dessiner, compatibilité ES2, programme binaire, shaders objets distincts, shaders Compute indirects

Ce que vous devez savoir?

Je suggère les thèmes suivants pour le début:

  • Connaissance générale de l'infographie
  • Différences de plate-forme (PC vs vs vs Console Web mobile)
  • pipeline graphique - étapes
  • 3D Math - matrices, vecteurs, projections
  • modèles d'appareils photo
  • Shaders (Vertex et Fragment)
  • Projection de Texture
  • Notions de base tampon
  • Les modèles de l'éclairage de base

Que:

  • Shaders (géométrie, Tessellation, Compute)
  • Gestion de la mémoire tampon avancée
  • Ombres
  • Global Illumination
  • ...

Je ai quitté cette deuxième liste de manière inachevée, lorsque vous atteignez ces points definiately savoir ce que vous devez faire.

Par où commencer?

Lorsque nous comprenons notre motivation et le but que nous puissions commencer à apprendre. Parfois, ce est une tâche assez difficile quand même! Il ya beaucoup de ressources disponibles de sorte qu'une personne peut être perdu et lâche son/sa passion initiale.

Je suggère de commencer avec un bon livre pour les débutants. Un des meilleurs est OpenGL Superbible. Ce était mon premier livre sur les graphiques de programmation. A ce moment, je ai eu la première édition! Maintenant, nous avons la 6e.

La structure:

  • Notions de base: premier triangle, le pipeline graphique, mathématiques, des tampons, des shaders
  • Détails: Vertex, Primitivo et le traitement de fragment, calcul de shader framebuffer,
  • Techniques: l'éclairage, les ombres, les cellules ombrage, la performance
  • Spécifique à la plateforme

Le dernier chapitre, sur les plateformes de OpenGL, donne un aperçu de la haute (et faible) utilisant OpenGL. Nous pouvons trouver non seulement dans les plateformes de bureau (entre différents systèmes d'exploitation), mais aussi entre les différentes plates-formes mobiles: (OpenGL ES 2.0 et 3.0) et Web (HTML5 WebGL).

Le livre fournit toutes les informations nécessaires pour démarrer et même devenir très compétent avec OpenGL. Le style d'écriture est grande et ne devrait avoir aucun problème avec la compréhension. La taille est d'environ 1 000 pages pour quelques-uns utilisateur plus expérimenté peut utiliser comme référence.

Il est également à noter que il ya beaucoup de contenu en ligne qui peuvent aider. Un de la meilleure formation disponible sur OpenGL moderne (3.3+) vient de Jason L. McKesson son tutorial arcsynthesis. Un autre bon site peut être open.gl et lighthouse3d noyau.

Où Continuer?

Lorsque vous avez la base et sait comment utiliser OpenGL alors vous pouvez choisir dans quel domaine vous voulez aller.

Il ya quelque temps une personne vont habituellement de rendre le développement du moteur - qui est, plus d'effets graphiques. Mais aujourd'hui, nous avons aussi applications web et mobiles pour que le feu peut être différente.

Pour le développement de graphiques «normal» suggère d'investir l'argent dans deux livres qui ont paru récemment - deux livres de cuisine en fait!

L'un d'eux est OpenGL Shading Language 4 Cookbook et la seconde est OpenGL développement Cookbook.

Livres de cuisine

L'idée de recettes programmation était tout nouveau pour moi, mais je l'ai aimé dès le début. Dans les deux livres mentionnés il ya beaucoup de différents sous-chapitres qui peut être lu dans pratiquement ne importe quel ordre. Nous commençons généralement par quelques exemples simples et passons à celles avancées, mais même la structure est plus lâche, comme avec les livres de programmation "communes".

OpenGL Shading Language 4 est une excellente ressource pour l'apprentissage de la dernière version d'OpenGL - 4.3. Il a récemment été mis à jour et le contenu encore plus belle. Nous avons les sujets suivants:

  • Les deux premiers chapitres introduisent et OpenGL GLSL moderne
  • Les deux autres de l'éclairage et l'utilisation de la structure (par exemple installations immuables!)
  • Chapitre 5 de traitement d'image et affichage spatiale effets (tels que le flou et HDR).
  • Ensuite, il ya un chapitre sur la tesselation et de géométrie shaders.
  • Chapitre 7 couvre les techniques Shadows.
  • Deux autres décrivent bruit et de particules animations
  • Puis, les dernières touches Compute shaders

Ces arguments constituent une base pour tout programmeur graphique très décent.


Le deuxième livre - OpenGL développement Cookbook - a un style similaire à la première. Il utilise OpenGL 3.3 - donc un peu 'vieux, mais toujours valide. Le livre décrit les domaines similaires: introduction à OpenGL, GLSL, l'éclairage, les ombres ... mais les exemples sont différentes de celles du premier livre. Vous pouvez comparer les exemples et obtenir des nouvelles techniques de la perspective et le codage.

Ce qui est important, OpenGL développement Cookbook ajoute quelques autres chapitres précieux à notre sac de connaissances graphiques:

  • rendu de volume,
  • Illumination globale,
  • Formats de fichier de la maille 3D,
  • systèmes d'animation et physique.

Dans l'ensemble, vous pouvez traiter à la fois de ces livres comme un paquet.

Ces deux livres de cuisine ont une grande valeur pour moi, parce qu'ils occupent un créneau entre les livres de programmation graphique. D'un côté nous avons les livres que le niveau d'introduction Suberbible, d'autre part il ya plus de livres "fondamentale" Pro GPU ou ShaderX (et récente OpenGL Insights). Les livres de recettes tombent dans le milieu et sont d'excellentes ressources pour toute personne qui a une bonne OpenGL de connaissances qui veulent aller plus loin.

C ++ est toujours nécessaire?

Comme vous l'avez probablement remarqué tous les livres et les sites Web mentionnés utilisés C ++ comme langage pour des exemples de code. C ++ semble être le choix le plus populaire dans ce domaine. Mais si vous connaissez d'autres langues qui ne sont pas condamnés!

OpenGL est que API et il ya beaucoup de langue différente attaques.

Donc:

  • Java jetez un oeil à: Java ™ de liaison pour l'API OpenGL
  • En outre, la majorité des Applications Android utilise son SDK pour les graphiques Java rendu utilisant OpenGL ES.
  • C # (ou Visual Basic) - .NET - regarder OpenTK
  • JavaScript il suffit d'utiliser WebGL
  • en plus d'autres langues aller ici - pages wiki

Il est à noter que peu importe ce langage de programmation que vous avez choisi la théorie graphique est le même. Donc, si vous savez comment faire un effet graphique dans une langue autre que ce qu'elle devrait être relativement facile de le faire d'une manière similaire dans une langue.

Ressources et liens

  • GLSL Tutoriel de base »Lighthouse3d.com
    Tutorial GLSL pour les versions de base
  • OpenGL - Introduction
    Guider un gros, mais amicales débutants utilisant OpenGL moderne pour le développement de jeux sur toutes les plateformes majeures.
  • Apprenez modernes graphiques 3D de programmation
    Un excellent tutoriel par Jason L. McKesson.

Conclusion

Dans cet article, je ai essayé de vous donner suffisamment de ressources pour démarrer et faire de bons progrès avec la programmation graphique. OpenGL est une technologie très populaire en ce moment. Un grand nombre de nouvelles possibilités sera disponible à ne importe qui avec des graphismes décents expérience API. Vous ne pouvez pas faire un moteur de jeu AAA, mais se déplace aussi dans un réseau ou le développement mobile.

Profitez de votre voyage avec OpenGL moderne!

Vous pouvez également afficher des informations sur OpenGL Blog Bartek: http://www.bfilipek.com/

(0)
(0)

Commentaires - 0

Sans commentaires

Ajouter un commentaire

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Caractères restants: 3000
captcha