1 pièce(s) jointe(s)
Problème d'affichage avec OpenGL
Bonjour à tous,
Avant de me lancer dans la lecture de tutos, de livres, etc. traitant du sujet, je voulais d'abord m'assurer de pouvoir faire un "hello world" dans mon environnement favori GTK+
mais je bute sur un problème, quelqu'un peut-il m'aider ? :)
Je précise que je développe en win32 avec les paquets MSYS2, que j'utilise Glade 3.22 et que tout naturellement j'ai cherché à faire ce qui est indiqué ici :
https://developer.gnome.org/gtk3/stable/GtkGLArea.html
Bien sûr mes directives de compilation contiennent epoxy d'ailleurs je n'ai aucun problème de génération de l'exécutable qui fonctionne bien à ceci prêt :
J'arrive à changer la couleur de fond en modifiant les paramètres de glClearColor(), mais le simple triangle que je cherche à afficher n'apparait pas ;(((
Voici le code contenu dans ma fonction render :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| // Rendu 3D
G_MODULE_EXPORT void on_3Dview_render(GtkWidget* pWidget, gpointer pData)
{
// inside this function it's safe to use GL; the given
// #GdkGLContext has been made current to the drawable
// surface used by the #GtkGLArea and the viewport has
// already been set to be the size of the allocation
// we can start by clearing the buffer
glClearColor(0.4, 0.4, 0.4, 0.4);
glClear(GL_COLOR_BUFFER_BIT);
// draw your object
glColor3f(1.0, 1.0, 1.0);
glOrtho(-1.0, 1.0, -1.0, 1.0, -1.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f(-0.7, 0.7, 0);
glVertex3f(0.7, 0.7, 0);
glVertex3f(0, -1, 0);
glEnd();
glFlush();
// we completed our drawing; the draw commands will be
// flushed at the end of the signal emission chain, and
// the buffers will be drawn on the window
} |
on_3Dview_render est le nom du signal render associé à l'objet GtkGLArea posé sur ma fenêtre principal dans Glade,
Si quelqu'un à une idée, Merci d'avance !
Voici ce que cela donne : Pièce jointe 440687
1 pièce(s) jointe(s)
C'est moche mais ça fonctionne !!!
Je confirme qu'il faut oublier tout ce qui est encadré entre glBegin() et glEnd() comme par exemple GL_TRIANGLES, bref passer dans le nouveau "monde" d'OpenGL 3, 4
Voici mon superbe "OpenGL hello world" ! Réalisé en suivant cet exemple : http://www.opengl-tutorial.org/fr/be...irst-triangle/
Pièce jointe 442881
1 pièce(s) jointe(s)
Des news : ça suit son cours, doucement mais surement..
Avec en prime une option d'orientation 3D de l'objet par un smartphone. Les inclinaisons sont transmises en socket UDP avec l'app Android HyperIMU : effet garantie !
Prochaine étape : point de vue caméra et zoom à l'aide de la souris.
Pièce jointe 531937