Salut,
est ce que quelqu'un aurait un tutorial pour me montrer comment utiliser Opengl avec une fenêtre GTK ? Sans utiliser de librairies externe si possible :wink:
Merci !
Gaetan
Version imprimable
Salut,
est ce que quelqu'un aurait un tutorial pour me montrer comment utiliser Opengl avec une fenêtre GTK ? Sans utiliser de librairies externe si possible :wink:
Merci !
Gaetan
avec GTK t'es obligé d'utiliser soit gtkglext soit gtkglarea!!!
moi j'utilise gtkglext car il a, maintenant, d'avantage de docs que gtkglarea.
Ok, du coup j'ai regardé un peu les exemples utilisant GLX sur NeHe, ça me parait intéressant...
Par contre est ce qu'il y a une alternative à la commande DefaultScreen ?
Oui, si tu développes une application n'utilisant pas de GUI (uniquement une fenêtre OpenGL) je pense que c'est peut être plus simple et plus efficace d'utiliser directement la Xlib et l'extension glX :)
DefaultScreen est une macro servant a récupéré le screen par défaut du display passé en paramètre sur ton poste de travail (en général nos ordis n'ont qu'un seul écran, je ne sais pas si la possibilité d'avoir plusieurs écrans sous linux est exploitable grâce a X11...).
Je ne comprends pas pourquoi tu cherches une solution alternative, tu as bien une fonction correspondante (XDefaultScreen) mais dans le cas d'applications simples ça convient parfaitement.
Pour construire ma fenêtre OpenGL, je suis partit plutôt de cet exemple :
http://www.xfree86.org/4.4.0/glXIntro.3.html
Etant donné que je ne souhaitais pas géré de mode plein écran, en plus sur mon ordi l'appel des fonctions de XFree86 fait plus ou moins planter le tout Oo
Bonne chance !
Salut,
Merci, XDefaultScreen, c'est exactement ce que je cherchait !
Par contre... elle n'a pas l'air de marcher....
Je fait ça :
dpy=XOpenDisplay(0)
scr=XDefaultScreen(dpy)
dpy retourne bien une valeur, mais Xdefaultscreen ne retourne rien...
Une fonction renvoie forcément une valeur, a moins que ton programme plante en plein milieu de son exécution ! (Et encore si tu utilises un gestionnaire d'erreur à la C++/Java il y a moyen de controller ceci...)
Essaye d'afficher sur la console le résultat de cette fonction (qui doit être de type int).
De toute manière cette valeur n'a pas réellement de sens pour nous, puisqu'il s'agit d'un index permettant a X d'identifier la structure écran utilisée par défaut.
Tu ne devrai même pas avoir besoin de stocker cette valeur dans une variable, je te conseille plutôt d'utiliser le résultat de XDefaultScreen en paramêtre des fonctions prenant en argument un identificateur d'écran.
Si tu tiens absolument a stocker cette valeur, fait-le sous la forme :
int scr=XDefaultScreen(dpy);
Bonne continuation :wink:
Je le stocke déjà sous un int, mais qui a dit que j'utilisais c++ ;)
Donc, quand j'essaie d'appeler XDefaultScreen directement de la lib, ça me retourne un joli 0 :) Par contre, ça ne plante pas... C'est pour ça que je me suis demandé si la valeur nulle de DefaultScreen n'était pas à cause du XOpenDisplay, mais lui il retourne une valeur, donc je suppose qu'il marche ?
XOpenDisplay retourne un pointeur vers une structure Display, donc une adresse non nulle (si tout va bien).
XDefaultScreen retourne un index vers la structure écran par défaut, PAS un pointeur vers cette structure...
Donc le résultat (0) est tout à fait cohérent, ce n'est PAS un pointeur nul !
Si tu avais plusieurs écrans sur ton système ils seraient sans doutes indexés par 0,1,2,3,etc...
Comme les indices de tableau à la C !
Il faut savoir que plusieurs types de la Xlib (les Window notamment) sont en fait de simple entier, et que tu ne manipulent que des indexs, c'est le serveur X qui fait le sale boulot à ta place derrière (en tenant éventuellement à jour une table des correspondances entre les indexs et des adresses de structures...)
Le code client ne peux accéder et modifier les données internes (fenêtres par exemple) que par le biais de fonctions bien spécifiques prenant en argument entre autre un index (de fenêtre par exemple, d'ou la nécessité de stocker le résultat de XCreateWindow, qui est un index vers la fenêtre venant d'être crée, et non pas un pointeur...)
Je te conseille de jeter un coup d'oeil à la documentation du X Window System, ça t'évitera de tirer de fausses conclusions sur le fonctionnement de cette librairie :wink:
A++ :)
Ah ok... J'avais pas tout compris alors, je m'attendais a un pointeur ;)
Bon, bah j'y retourne ;)