Commencer avec OpenGL lorsque la plupart des tutoriels sont obsolètes [fermé]

16

Je suis sûr qu'il y a déjà un tas de questions comme celle-ci, mais la mise à jour constante de la bibliothèque OpenGL les jette toutes, et dans un mois ou deux, les réponses ici seront à nouveau sans valeur.

Je suis prêt à commencer la programmation en OpenGL en utilisant C ++. J'ai un compilateur fonctionnel (DevCpp; ne me demandez PAS de passer à VC ++, et ne me demandez pas pourquoi). Maintenant, je cherche juste un tutoriel solide sur la façon de programmer avec OpenGL. Mon assistant a trouvé le tutoriel fourni par NeHe Productions, mais comme je suis venu le découvrir, c'est bien hors de la date! (même si j'ai rassemblé une fenêtre de base pour prendre en charge un canevas OpenGL)

Ensuite, je suis allé en ligne et j'ai trouvé l'OpenGL SuperBible, qui utilise apparemment freeglut? Mais ce que je voudrais savoir, c'est si SuperBible 5ème édition est à jour ou non. La suggestion de freeglut que j'ai trouvée disait que la dernière version était 2.6.0 mais maintenant c'est 2.8.0!

  • L'OpenGL SuperBible est-il toujours un bon point de départ et assez à jour?
  • Y a-t-il un meilleur endroit où aller pour apprendre OpenGL?
  • Suis-je autorisé à simplement stocker freeglut dans le répertoire d'inclusion de DevCpp (peut-être dans GL), ou y a-t-il une procédure importante?
  • Y a-t-il des commentaires ou des suggestions que je n'ai pas pensé demander puisque je ne fais que commencer?

@dreta a clarifié certaines choses pour moi, alors maintenant j'ai une meilleure idée de ce qu'il faut demander:

Je pense que je voudrais commencer avec OpenGL en utilisant une bibliothèque wrapper au lieu d'accéder directement à OpenGL.
Je pense juste que, pour un débutant, il serait plus facile pour moi de programmer et d'obtenir de bons résultats, alors que je n'ai pas encore besoin de comprendre tous les détails crasseux (comme l'a mentionné @stephelton).

Le problème est que je ne trouve aucune bibliothèque qui n'a pas de références non définies à des fonctions qui ne sont plus prises en charge. Freeglut semble opérationnel, mais il utilise toujours GLU.
Est-ce que quelqu'un sait ce que je peux faire?
De plus, j'ai essayé de compiler la première source de SuperBible, mais j'ai eu des erreurs car GLAPI n'est pas défini comme un type, l'erreur provenant de la bibliothèque GLU.

J'aimerais utiliser la SuperBible, mais je ne sais pas comment résoudre ce problème.

Fabricant de codes
la source
2
Vous devez passer à GCC.
notlesh
DevCpp est juste un IDE; qui exécute GCC (mingw pour être spécifique). Mais depuis qu'il a été mentionné, Eclipse CDT serait préférable, car il n'a pas été abandonné depuis 10 ans.
Casper Beyer
4
@Casper L'héritier de l'héritage DevCpp était Code :: Blocks et est toujours mis à jour régulièrement.
Alex Shepard
1
Si vous voulez une bibliothèque wrapper autour d'OpenGL, je vous suggère d'essayer SFML . SFML fournit les éléments habituels comme la création de fenêtres, les minuteries, etc. tout en vous permettant de dessiner du texte et des formes simples. Vous pouvez vous noyer à l'aide d'OpenGL "brut" quand vous le souhaitez, en mélangeant les fonctions SFML et les appels d'API bruts.
Oskar N.
1
Vous ne pouvez pas "fermer" une question en ajoutant "{CLOSED}" au titre. Les questions seront fermées par les modérateurs ou si suffisamment d'utilisateurs ont voté pour fermer la question. Je vais annuler vos modifications .. le "CLOSED" sera automatiquement ajouté à votre titre si les modérateurs décident de le fermer ..
bummzack

Réponses:

19

Notre résident Nicol Bolas tient un livre en ligne sur la programmation graphique moderne . Il utilise OpenGL moderne, tout est présenté à un rythme facile à consommer, c'est un bon point de départ. Je l'ai utilisé pour apprendre l'OpenGL moderne et cela m'a fait des merveilles au cours des 2 derniers mois.

À côté de cela, il y a des connaissances ici et là. Le wiki OpenGL est assez bien maintenu. Le code n'est pas des «meilleures pratiques» et il y a parfois une ambiguïté en ce qui concerne la version OpenGL, mais en dehors de ces rares occasions, c'est une excellente ressource.

Si vous voulez en savoir plus sur GLSL, il y a le tutoriel GLSL Core de lighthouse3D. Bien qu'il s'agisse de la seule connaissance de base à laquelle je "fais confiance" sur le site, le reste a tendance à être dépassé.

Une fois que vous aurez commencé à comprendre comment fonctionne OpenGL moderne, vous aurez du mal à rechercher des informations spécifiques, à filtrer le code obsolète et, surtout, à lire les spécifications. Il suffit de commencer quelque part.

La plupart, sinon la totalité des livres OpenGL disponibles sont obsolètes. La nouvelle SuperBible est un monstre quelconque et je ne le recommanderais à personne. Le Guide de programmation OpenGL pour OpenGL 4.1 sort le 16 septembre, malheureusement la 7e édition utilise du code obsolète, vous n'avez donc qu'à attendre, j'en suis sûr.

Et bien sûr, vous pouvez toujours poser des questions ici.

dreta
la source
1
Pourquoi ne proposeriez-vous pas la SuperBible?
Codesmith
3
@AUTO La 5e édition de la SuperBible utilise un wrapper personnalisé autour d'OpenGL pour le rendre "accessible". De nombreux exemples utilisent le wrapper personnalisé de manière excessive. Il ne vous apprend pas à quoi il est destiné, qui est la spécification de base d'OpenGL. La façon dont je le vois, si vous n'avez pas explicitement à apprendre OpenGL obsolète, alors oubliez simplement qu'il existe même. Il est inutile de l'apprendre. La spécification de base est beaucoup plus claire et puissante.
dreta
@AUTO La spécification de base est beaucoup plus exigeante au début, c'est une bonne chose. Cela vous obligera à prendre en charge la plupart du processus de rendu, vous donnant une compréhension et un contrôle complets sur celui-ci. Il ouvre beaucoup, beaucoup plus de possibilités que le code obsolète. Après cela, si vous pouvez apprendre l'API de votre système d'exploitation et lanuch OpenGL sous elle sans des choses comme la surabondance, alors vous êtes au pays des merveilles.
dreta
OK, alors laissez-moi vous poser une question importante: la bibliothèque GLU semble être obsolète et complètement non prise en charge; en utilisant la spécification, est-ce que j'obtiens un accès direct, en contournant le besoin du GLU? Tels que, je n'obtiendrais plus d'erreurs de l'éditeur de liens vers des fonctions inexistantes référencées par la bibliothèque GLU?
Codesmith
@AUTO GLU est complètement inutile, je ne l'ai touché qu'avec un poteau de 10 pieds pendant la classe de programmation graphique (nous avons dû utiliser du code obsolète, c'était douloureux, les normes changent plus vite que le programme de leçon, je suppose). C'est juste une bibliothèque qui aide avec le code obsolète. Si votre code est configuré avec GLU, il pue probablement.
dreta
1

Cela fait un moment que cette question n'a pas été posée mais j'espère que cela aidera les gens qui ont la même question que vous.

J'ai commencé avec OpenGL en lisant un mini-livre arcsynthesis.org. Je ne sais pas qui l'a écrit. Il semble que l'enregistrement du site soit expiré ou quelque chose comme ça, mais vous devriez pouvoir le trouver ici: http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/ . Il utilise OpenGL 3.3, vous utiliserez donc le pipeline moderne et toutes les pratiques que cela implique, mais vous ne serez pas exposé à la tessellation ou aux shaders de calcul.

Un autre site mérite d'être consulté est https://open.gl/ . Il semble être très concentré sur les débutants et ne couvre pas les choses aussi en profondeur que le matériel ci-dessus, mais cela pourrait être un bon point de départ pour les personnes qui commencent tout juste.

N'oubliez pas de lire le wiki OpenGL et de google vos noms de fonction si vous avez besoin d'aide. Certaines pages du wiki sont complètement inutiles mais d'autres sont très utiles, à la fois comme référence et comme matériel d'apprentissage.

Goût
la source
1
La personne mentionnée dans la réponse acceptée l'a écrite Nicol Bolas - gamedev.stackexchange.com/users/8240/nicol-bolas
Jesse Dorsey
0

Ces anciens tutoriels sont toujours très pertinents pour les débutants. En fait, je suggère de commencer par là plutôt qu'avec des versions récentes d'OpenGL. Des versions plus récentes ont abandonné certaines des méthodes les plus faciles de dessiner la géométrie (à savoir le dessin en mode immédiat).

Avec les versions récentes, vous devez préparer et envoyer des tableaux de sommets et indiquer à la carte vidéo comment vos sommets sont organisés dans le tableau que vous fournissez. Ces choses sont lourdes à déboguer.

Certaines versions (à savoir OpenGL ES 2.x) vous obligent à fournir vos propres équations d'éclairage (sous la forme de Fragment Shaders) et à transformer vos propres données de vertex afin qu'elles finissent sur l'écran où vous le souhaitez (Vertex Shaders). C'est encore plus difficile à déboguer, et ce n'est pas un endroit pour un débutant (à mon avis).

Je vous suggère donc de revenir à ces didacticiels NeHe (etc.) et de commencer par là. Ils peuvent être "obsolètes" mais ils fonctionnent toujours. Lorsque vous commencez à comprendre ce qui se passe réellement dans le pipeline de rendu dans OpenGL et à avoir une idée de certains des concepts mathématiques qui font fonctionner ces choses, alors vous serez prêt à examiner certaines des méthodes les plus à jour de rendu en OpenGL.

notlesh
la source
En fait, ils ne fonctionnent pas. C'est pourquoi j'ai posté cette question. Ils utilisent la fonction gluPerspective qui est obsolète, et il n'y a pas de substitut absolu.
Codesmith
1
Ce n'est pas une fonction OpenGL. Il s'agit d'une fonction utilitaire distincte fournie par une autre bibliothèque. Vous pouvez trouver le code facilement - ce n'est pas très difficile.
notlesh
Merci, mais je n'ai trouvé qu'un substitut imparfait que je ne sais pas utiliser. Il accepte un argument "float * matrix", alors que l'ancien utilise une matrice interne. Que dois-je y mettre alors?
Codeur
Le premier coup sur google pour "implémentation gluPerspective" est exactement ce que vous recherchez. il appelle glFrustum, qui n'est pas disponible dans certaines versions récentes d'OpenGL (ES 2.x ne l'inclut pas). Même cela n'est pas trop difficile à trouver.
notlesh
0

Comme d'autres l'ont dit, la plupart des livres sont obsolètes ou trop avancés. Néanmoins, je recommanderais la 5e édition de la SuperBible, mais seulement pour avoir un aperçu rapide de ce qui peut être fait dans OpenGL et pour se familiariser avec des choses comme la vue / projection, etc.

Plonger immédiatement dans OpenGL moderne pourrait peut-être vous submerger au début, alors pensez à apprendre à faire certaines choses de base dans les versions désormais obsolètes.

Je voudrais également ajouter un site avec de bons tutoriels que j'ai trouvés récemment http://ogldev.atspace.co.uk/

Grieverheart
la source
Merci, je vais vérifier ce tutoriel; mais pour utiliser OpenGL SuperBible, ma question demeure: comment réparer GLU, puisque freeglut en est basé?
Codeur
@AUTO: FreeGLUT n'est pas "basé sur" GLU. Certaines fonctions FreeGLUT appellent GLU, mais si vous n'appelez pas ces fonctions, vous n'aurez pas de problème.
Nicol Bolas
Mais n'est-il pas probable que la SuperBible appelle ces fonctions? Et si elle le fait, je ne peux pas utiliser ce .
Codesmith
Vraiment, mon avis est de ne pas s'embêter avec le code source fourni avec la SuperBible. Lisez-le mais essayez de tout faire à partir de zéro. Sur vos problèmes avec GLU, ma meilleure supposition est que vous n'avez pas configuré / installé correctement vos bibliothèques. Téléchargez la dernière version de MinGW. Téléchargez également la dernière version de freeglut et compilez-la, ou trouvez une bibliothèque précompilée. Quoi qu'il en soit, vous devriez commencer à apprendre certaines choses plutôt que de consacrer autant de temps à planifier la façon de commencer.
Grieverheart
@AUTO: Pourquoi est-il probable que la SuperBible les appelle? S'il les appelait, le code de la SuperBible ne fonctionnerait pas. C'est pourquoi il ne les appelle pas.
Nicol Bolas
0

arcsynthesis.org (le site mentionné dans la réponse acceptée) semble malheureusement être en panne. (EDIT: il est disponible sur ce lien !).

Les tutoriels d'Anton Gerdelan pour OpenGL 4 sont très lisibles et à jour à la mi-2014. Les premiers sont gratuits, les autres sont disponibles sur Amazon, où ils ont de bonnes critiques, pour un petit prix. Jusqu'à présent, j'ai été satisfait.

Il existe d'autres didacticiels gratuits pour OpenGL 3.3+ sur http://www.opengl-tutorial.org/ . Ils remontent à 2012, mais peuvent constituer un bon matériel supplémentaire pour d'autres sources.

iHateCamelCase
la source
OGLDev est à jour, en profondeur et gratuit. ogldev.atspace.co.uk/index.html
Yattabyte
toux
Nicol Bolas
Super de voir qu'il est disponible! Je vais également consulter ces documents.
iHateCamelCase