2010-12-02 9 views
9

Il y a quelques années, j'ai beaucoup joué avec OpenGL2.1 en écrivant de nombreuses démos qui utilisaient des fonctionnalités de base (principalement le mode immédiat) sans se soucier de l'approche du shader. Maintenant j'ai besoin d'OpenGL à nouveau pour un projet personnel, d'après ce que je lis toute l'approche de ce genre d'API changé depuis maintenant presque tout est fait directement par le GPU à travers les vertex/pixel shaders.Entrer dans le nouveau OpenGL

Je voudrais savoir quelles sont les principales différences entre l'état de l'art actuel (je veux dire l'efficacité dans le développement et le résultat) et OpenGL par rapport à ce pour quoi j'étais utilisé.

Existe-t-il un tutoriel pour savoir qui vient de l'ancienne approche d'OGL? Dois-je abandonner mes vieilles idées d'appliquer des transformations manuellement, dessiner des choses avec glBegin..glEnd et ainsi de suite?

Puisque je travaille avec Java et que j'aimerais utiliser une bonne bibliothèque, avez-vous des suggestions? J'ai trouvé LWJGL qui semble assez bon aussi si tout est déjà géré donc je me demandais si ça valait la peine de l'utiliser ou simplement coller à quelque chose de plus essentiel des composants d'écriture au besoin (comme des objets mathématiques).

+3

Pour tout nouveau projet, vous voulez certainement utiliser le style moderne. Le style glBegin/glEnd est appelé "mode immédiat" et a été abandonné pour plusieurs versions majeures. (Nous sommes à la hauteur de GL 4.1 et IIRC, il était à la sortie de 2.1 quand les shaders sont arrivés à bord.) Les shaders, les objets vertex, etc. sont la voie à suivre. Le blog de Durian Software mentionné par Guillaume ci-dessous vaut la peine d'être lu. – gavinb

Répondre

6

Les différences entre l'ancien mode immédiat et la nouvelle façon de faire sont assez énormes. Il n'y a étonnamment pas beaucoup de bon contenu là-bas, vous pouvez ignorer 99% des tutoriels OpenGL sur le web. Le point positif avec LWJGL est qu'une fois que vous avez compris les différences entre LWJGL et les appels réguliers d'OpenGL, vous pouvez généralement utiliser des tutoriels d'autres langues.

Les seules trois bonnes ressources que je ne pourrais jamais trouver Étiez:

En outre, LWJGL est grande.Cela ne vous donnera pas un plus haut niveau d'abstraction, car c'est juste un léger wrapper autour des appels C (mais cela signifie aussi qu'il ne fera pas un travail médiocre pour essayer de créer OpenGL OO), et c'est plutôt performant. LWJGL ne fournit pas beaucoup (même pour les mathématiques), donc vous aurez probablement besoin d'acquérir (ou en dernier recours écrire) des bibliothèques de mathématiques pour quelque chose de complexe.

3

Il existe des billets de blog sur Durian Software sur la programmation OpenGL moderne. C'est en C, mais il utilise beaucoup les shaders (écrits en GLSL), donc la quantité de code C n'est pas si bonne. Selon Wikipédia, il existe des liaisons GLSL vers Java, vous devriez donc vous intéresser à cela.

Apparemment, LWJGL supporte les shaders: http://lwjgl.org/wiki/index.php?title=GLSL_Shaders_with_LWJGL

Voici le lien vers le premier billet de blog que je mentionnais plus tôt:

http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Chapter-1:-The-Graphics-Pipeline.html

J'espère que cela!