2010-01-16 4 views
4

J'ai commencé à jouer avec OpenGL en Python en utilisant PyOpenGL 3.0.1b. J'ai regardé un exemple de code et j'ai commencé à l'exécuter et à le modifier, etc. Tout allait bien jusqu'à ce que je devienne un peu moins ignorant.Nouveau sur OpenGL et désapprobation

Sur http://pyopengl.sourceforge.net/documentation/manual-3.0/index.xhtml les fonctions OpenGL sont listées ainsi que si elles sont obsolètes ou non. Donc je me suis dit que je devrais juste trouver des tutoriels à jour qui n'utilisent pas toute cette merde obsolète.

Des heures plus tard, pas de chance! Exemple de code déprécié après un exemple de code obsolète ... y a-t-il quelque part où je peux aller pour des tutoriels non obsolètes?

+1

Pas un exemple, mais ce message du forum a un peu d '"aide, je ne peux rien dessiner!" type d'aide: http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=252272 –

+1

Bien que si vous êtes nouveau à OpenGL entièrement, je recommande sérieusement d'apprendre le style OpenGL 2 d'abord (beaucoup de tutoriels sur ça). 2.x est beaucoup plus simple pour les débutants, et il n'est pas si difficile de passer à 3.x plus tard. –

+2

Je considère commencer avec OpenGL 2.x dangereux. Il y a beaucoup de façons d'accomplir des choses dans 2.x, et il y a de fortes chances que vous commenciez à apprendre celles qui sont obsolètes dans 3.x. –

Répondre

2

OpenGL ES 2.0 est en fait très similaire à OpenGL 3, avec certaines fonctionnalités supprimées (telles que les cibles de rendu multiples, certaines instructions de shader, etc.). Le guide de programmation OpenGL ES 2.0 contient des didacticiels et des codes sources à télécharger, ce qui peut vous aider à démarrer avec OpenGL 3.0. Ce qui compile dans ES 2.0 compilera également pour les nouvelles spécifications OpenGL, principalement. Vous pouvez également rechercher des didacticiels ES 2.0 en ligne.

Je vous recommande également de vérifier le moteur graphique que je développe (OpenREng). Vous pouvez consulter les classes wrapper OpenGL pour voir la plupart des fonctionnalités prises en charge dans les nouvelles spécifications.

+2

mineur-pick. GL3 est très similaire à GL ES 2.0. ES 2.0 a été le premier à être spécifié, après tout. – Bahbar

+0

@Bahbar Je ne sais pas pourquoi la similarité devrait être chronologique. N'est-ce pas une propriété symétrique? –

+0

Je préfère ne pas suggérer d'apprendre le bureau GL à travers GLES, car cela introduit beaucoup plus de problèmes. @OP Regardez la réponse de Tomriddle si vous êtes toujours intéressé et n'avez pas encore fait l'erreur d'acheter un livre sur une API que vous n'utiliserez pas. –

2

La façon dont je recommande l'apprentissage est de prendre un fixe programme de fonction et commence lentement à le transformer en un profil de base en ajoutant chaque bit à la fois. Il y a fondamentalement 3 choses principales que vous devez aborder et malheureusement il y en a toutes assez grandes et qui se lient les unes aux autres de telle sorte que si vous n'obtenez rien à l'écran, vous n'avez aucune idée de ce qui est cassé. Mais si vous pouvez y aller de la bonne façon, vous devriez aller bien.

D'abord, apprenez Vertex Buffer Objects et Vertex Array Object. Pour fossé glBegin, glEnd, glVertex3f, glColor4f, glNormal3f, glTexCoord2f, etc ...

savoir des transformations de matrice manuelle Ditch glRotatef, glTranslate, glPushMatrix, glPopMatrix, glMatrixMode, glLoadIdentity, GL_PROJECTION, GL_MODELVIEW, glFrustum, glOrtho, gluLookAt, gluPerspective, gluOrtho2. Je vous recommande de regarder GLM qui est celui que le site OpenGL mentionne dans son SDK. Pendant que vous utilisez encore les composants de fonction fixe sur le profil non-core, vous pouvez charger manuellement la matrice avec glLoadMatrixf, plus tard vous devrez lier les matrices aux shaders.

Apprenez les shaders GLSL de base. Il y a obsolète gl_vertex, gl_normal, ftransform() qui devrait toujours fonctionner avec les VBO, vous pouvez les utiliser jusqu'à ce que vous ayez les réglages de shader entièrement configurés.

Ensuite, effectuez toutes les liaisons de shader, utilisez les attributs de vertex au lieu des attributs gl_vertex et gl_position. Utilisez des uniformes pour télécharger le modelview, et les matrices de projection plutôt le ftransform(). et des choses comme les lumières et les propriétés matérielles (j'ai tendance à télécharger le modelviewprojection au lieu de seulement la projection de sorte que le shader ne calcule pas cela à chaque fois).

Enfin, utilisez un profil de base, vous aurez besoin d'une boîte à outils de fenêtrage qui prend en charge la création d'un profil. GLUT, GLFW faire. SMFL ne le fait pas. SDL 1.3-dev fait. Je ne pense pas que pygame le fasse malheureusement. Le profil de base abandonnera toute fonctionnalité obsolète qui a été laissée traîner.

+1

Bien que ce soit une bonne idée, il s'agit plutôt d'un exercice de formation une fois qu'il a trouvé des ressources d'apprentissage et qu'il ne répond donc pas vraiment à la question. –