ABCDEFGHIJKLMNOPQRSTUVWXYZ

cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008 - 2 sept. 2005 à 14:05
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006 - 23 mars 2007 à 15:36
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33559-abcdefghijklmnopqrstuvwxyz

TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
23 mars 2007 à 15:36
yop, juste une précision par rapport à la mise à jour (01/03/2007): en compilant gxdemo sous ubuntu, j'ai eu le droit à un bon vieux seg fault à l'exécution. pourtant ça s'exécute bien sous windows et le code est le même.

j'ai essayé de recompiler avec gcc-2.95, gcc-3.3, gcc-3.4 et gcc-4.0 (par défaut c'est gcc-4.1), et étrangement ou pas, la seule version avec laquelle gxdemo marche comme il doit est gcc-3.4 (la version windows a été compilée avec mingw/gcc-3.4.2...). le seg fault viendrait de libASE, qui utilise lex, mais j'en sais pas plus.

donc pour que ça marche, faut remplacer CC gcc dans le Makefile en CC gcc-3.4 (euh d'abord sudo apt-get install gcc-3.4) et extraire le .ASE avec les textures directement dans le même répertoire que l'exécutable, histoire qu'il y ai pas de problème au niveau du chargement des textures avec les path...

et au fait oubliez pas de faire un click droit ;)

++
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
13 janv. 2006 à 12:26
tu choppes tout ça ici (même les binaires et un installeur pour faire plus simple): http://guinux.is.dreaming.org sous la section GX3D

tcho
ouanes29 Messages postés 1 Date d'inscription lundi 9 janvier 2006 Statut Membre Dernière intervention 10 janvier 2006
10 janv. 2006 à 20:09
Je suis entrain de tester ce programme,
Mais j'ai pas trouver les biblio sdl.h et gx3d.h et...
Pouvez vous les envoyer
Merci
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
21 déc. 2005 à 23:11
salut les gars,
au lieu de vous embêter avec tout le texte, j'ai enfin fait un installeur qui regroupe gx3d avec tous les binaires et ses 'ancetres'. a recuperer sur mon site que je viens enfin de finir http://guinux.is.dreaming.org (lien direct http://guinux.freezee.org) où ya tout ce que jai codé au lycée. voilà, et oublier pas de remplir le guestbook :)

salut et joyeux noel a tous,

guillaume
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
12 sept. 2005 à 15:04
bah oué entierement d'accord, je rajouterai juste que l'exemple de la ligne est le plus simple... avec des triangles c'est BEAUCOUP plus rigolo: t'as plans de clipping, un triangle, et tu dois couper le triangle en 2 (parfois) pour chaque plan. ca peut mener a .... 36 triangles :D
bref
ya de quoi s'amuser ^^
++
ad
(ps: je ne pourrai pas répondre a ce mail avant 6 semaines)
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
11 sept. 2005 à 14:44
arnaud > ouais bah tout le monde demande lyon en prio, donc si t'as eu ton deuxieme choix c dja pas mal :) par contre jsuis pas du tout du coté de rouen lol...

vladisback > ce que je fais c'est dessiner dans un buffer (un bete buffer avec malloc, donc pas en mémoire vidéo), ce qui est rapide comparé au pov setpixel de l'api windaube. attention cependant, le setpixel effectue un test de clipping il me semble, une des raisons pourquoi c'est lent, alors qu'il faudra que tu fasses gaffe toi meme à ne pas dépasser si tu dessines dans un buffer, sinon bonjour les seg' fault. dans le cas général, tu ne dessines pas des pixels individuellement, mais des ensembles définis de pixels où les pixels sont en relation les uns les autres, donc il est idiot de faire un clipping pour chaque pixel de l'ensemble. en effet il est bien plus optimisé d'effectuer un clipping sur tout l'ensemble suivant ses caractéristiques, et ensuite de le dessiner, là déjà tu vas gagner en vitesse par rapport au setpixel. une fois ton buffer ready, tu le balances dans la "mémoire vidéo" avec une fonction de copie rapide, spécialement pour ça (SetDIBits pour l'api windows). ainsi tu évites également l'effet de scintillement qui se produit dans le cas où chaque pixel dessiné est directement visible à l'écran.

en résumé:
1) clear buffer (memset, ou ZeroMemory pour l'api win, c'est ptet plus rapide)
2) dessiner dans le buffer (en faisant gaffe au clipping)
3) copie rapide dans la mémoire vidéo (SetDIBits pour l'api win)

pour le clipping, je donne un exemple: en dessinant une ligne, tu vas dessiner chaque pixel individuellement, mais tu fais un seul clipping au début pour déterminer les extrémités de la ligne qui sont dans le rectangle-image, et non un clipping pour chaque pixel que tu vas dessiner qui serait bcp plus lent.

au fait, si tu utilises un buffer, tu ne profiteras plus des fonctions de l'api windows pour dessiner des lignes et toutes ces primitives, on est d'accord :) bon en fait y'a toujours moyen, tu dessines sur ton HDC avec les foncs de l'api win, puis tu fais un GetDIBits pour récupérer les pixels dans un buffer, là tu dessines et enfin tu SetDIBits dans ton HDC écran. mais bon s'il faut que tu passes de l'un à l'autre bcp de fois, c'est ptet pas top non plus, après à toi de voir comment optimiser.

bon voilà mon opinion sur le dessin 2d sur un ordi lol :)

++ guinux
vladisback Messages postés 61 Date d'inscription dimanche 19 novembre 2000 Statut Membre Dernière intervention 5 août 2008
10 sept. 2005 à 12:03
Euuh, salut moi j'entre en prépa tsi (mais ça tout lmonde s'en fou) et en fait j'aimerai savoir comment on peut ecrire directement la memoire video comme tu le fait, si vous aviez un exemple simple ce serai sympas parce que c'est vrai que les setpixel de windows sont assez pourris.
merci
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
4 sept. 2005 à 20:41
Rouen. mon 2eme choix... bouh j'ai pas eu Lyon :'(
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
4 sept. 2005 à 16:44
au fait, t'es dans laquelle des 5 INSA?

+
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
4 sept. 2005 à 12:10
oui effectivement...en fait tout était fait pour les textures, mais j'ai galéré pour les chargements d'image...c'était la fonction gmTexImage2d qui m'embetait
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
4 sept. 2005 à 11:45
pour le zbuffer et les textures, je quote arnaud: "tout le principal y était implémenté, zbuffer, matrices, quaternions, etc....il manquait juste les textures". donc à priori ton mode de rendu était en lignes de fer? jvois pas l'interet d'un zbuffer dans ce mode de rendu, mais maintenant que j'y pense, tu as très bien pu utiliser des polygones colorés uniformément, sans texture, mes excuses donc.

bon donc voilà, il nous restera tjrs les vacances pour coder (un peu) :)

++ guinux
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 sept. 2005 à 21:18
Je vois pas trop le rapport entre le z-buffer et les textures non plus, c'est le point que je voulais soulever dans mon précédent message et puis j'ai oublié. Pour Funto, baaaah, non t'as raison, ne trollons pas ^^, mais suis rassuré :p
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
3 sept. 2005 à 21:17
kirua t'as posté plus vite que moi ^^ non c'est juste qu'il 'aura pas de PC (il ne veut pas) a Nice, son seul lien ac la prog dorénavant c'est nos sms :p
et je pense qu'il veut juste dire que ce fut un memebre tres actif, comme il l'est maintenant sur coder-studio.com ( ya qu'a voir son tgaloader, tres réutilisé , ce qui est tres rare sur ce site)
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
3 sept. 2005 à 21:15
pour ta 1ere phrase: dsl je vois pas le rapport entre zbuffer et texture
pour SetPixel : entierement d'accord
pour SDL : oui j'avais bien compris...et pour les images, bah bmp c'est facile, tga fuunto l'a fait, jpeg t'as pas le choix, pgn je crois que c'est pas trooop dur, et gif j'y travaille (qd ca me passe)
pour les lumiere:
alors : non j'ai pas le temps, moi je rentre a l'INSA c'est pas mal aussi dans le genre taf ^^
oui ca m'intéresserait
et pour calculer ca c'est tres simple (presque idem pour phong d'ailleurs, la seule différence c'et que c'est pas une interpo linéaire mais une formule style Gauss) il suffit de connaitre le produit scalaire (c'est un réel je rappelle) entre la normale a chaque point et le vecteur directeur de la caméra. ensuite une interpolation linéaire pour multiplier chaque pixel par ce produit scalaire ( l'interpolation c'est pour que par exemple sur l'arete d'un triangle, le pixel qui est au milieu soit influencé par les 2 sommets qui l'entourent, rien a voir avec celle dont je te parlais pour phong)
pour le filtrage : c'est bien des textures dont je te parlais
pour Funto66 non il s'est pas fait virer lol, c'est lui qui est parti pour ses etudes ^^ comme nous tous....et oui, c'est un "grand" membre meme si il boude le site soit disant que c'est une "vitrine microsoft" selon ses propres termes mais par PITIE n'entrons pas ds un big débat sur cette source.
++
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
3 sept. 2005 à 21:10
"par contre jai entendu parlé de funto dans un aut' poste et il a du pas mal secoué codes sources... lol... (au fait il s'est fait viré si j'ai compris?)"

C'est quoi cette histoire? Désolé de réagir là-dessus après avoir lu ton poste entier, mais tu m'intrigues et m'inquiètes O_o. Tu as plus d'infos? (pourtant je lis quasiment tous les postes de la majorité des sources -_-)
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
3 sept. 2005 à 20:48
un zbuffer sans texture... j'ai du mal à capter là :)

SetPixel, l'api windows donc... oui pas portable, et surtout pas optimisé comme méthode (préfère utiliser un buffer puis SetDIBits pour coller ton buffer au HDC), mais c'est vrai qu'en asm sur un buffer ce serait bien, mais pas portable :) mais c bien comme ça que gx3d marche, avec un buffer (en malloc), apres y suffit de le balancer à ta fonction "update video device".

pour SDL, je reprécise: GX3D est en ANSI-C, ya pas un bout ni un appel a SDL, j'utilise juste SDL pour mon exemple dans le role open/update/close video device (et pour les touches aussi...) avec le buffer qui contient l'image que GX3D a rendue. pour SDL_image, oui ce serait bien de tout refaire (jaimerai aussi), mais jte garanti que c pas aussi facile, ce serait long et fastidieux, et SDL_image s'est trouvée bien utile pour gagner du temps. et là encore, tu n'as pas besoin de linker sur SDL pour utiliser GXImage. mais si qqun le fait, c sur que ce serait super interessant, et on aura un GXimage bcp plus petit en termes de code compilé.

pour les lumières, j'ai eu l'occasion de beaucoup m'informer la dessus, mais je n'ai malheureusement pas eu le temps de m'en occuper :( un gouraud serait rapide et bien interessant pour commencer, un phong serait plus réaliste, mais plus dur a implémenter et plus couteux en temps d'execution, ce qui se discute pour une implémentation "software only" d'une lib graphique 3d. donc une gouraud pour commencer :) jai pas le temps, mais si qqun était motivé pour contribuer: dans zbuffer.c, la fonction GX3D_ZBufferMappedHLine() (qui est appelée par GX3D_ZBufferMappedTriangle()), les pixels sont dessinés un à un, et pour chaque pixel on a le x,y,z du pixel en question. A priori donc, facile a implémenter un gouraud la dedans. (attention a faire qqch de propre quand même :)). jai vraiment vraiment plus le temps de coder, je viens de rentrer en mpsi donc faut que je bosse h24, mais si ya des gens que ca interesse de continuer ou évoluer, j'en serai ravi, franchement! c'est vrai que là ya encore des trucs interessants a faire, d'autant que la lib est dja assez avancée, donc c pas comme si on partait de rien. (écrire dautres demos aussi :))

un ptit filtering matrice 2x2 pour smooth un peu l'image serait en effet interessant, faut voir aussi ptet un filtering au niveau des textures... mais bon c pas la priorité de la priorité. dees mipmaps connait po.

oui sous ubuntu, mais jconnais pas ce funto. juste ras le bol de windows et ubuntu etait loccasion de souvrir au monde linux... par contre jai entendu parlé de funto dans un aut' poste et il a du pas mal secoué codes sources... lol... (au fait il s'est fait viré si j'ai compris?)

bref, en tout cas merci bcp pour votre enthousiasme, jespere que GX3D ne sarretera pas là malgré tout le texte à lire :) (oui faut quand même donner qq infos non?)

++ guinux
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
3 sept. 2005 à 17:08
hello
j'ai fait un truc comme ca ya pas longtemps, MG ca s'appelle.
c'était pas aussi évolué, pas portable du tout, mais ca marchait qd meme... tout le principal y était implémenté, zbuffer, matrices, quaternions, etc....il manquait juste les textures, plus virer des stupides bugs
enfin bref, BRAVO....
j'avoue ne pas avoir tout lu c'est long lol, mais t'as fait l'ombrage gouraud ? ca rend pas mal pour pas gd chose en calcul
pour l'écriture en mémoire, tu t'y prends comment? a l'époque j'étais un barbare lol, yavait tout en SetPixel (c'est pour ca que c'était pas portable), on m'a dit d'ecrire direct dans la mémoire de la carte graphique...j'avais la flemme lol je l'ai pas fait, en plus maintenant que je code en asm ca serait facile a faire :'(
Je vois que tu utilises la SDL... pour un truc qui se veut portable c'est judicieux, mais je trouve que tu triches un peu en utilisant SDLImage :p a ce niveau la t'aurais pu tout faire toi meme :D
ya tu filtage bilinéaire (je ne pose pas la question pour le trilinéaire... ca serait trop beau... et implémenter dees mipmaps, bonjour la galere ^^ )
bref en tout cas un jouli 10
(et en plus t'es sous ubuntu lol, une autre victime de Funto ??)
j'en profite pour rappeller aux admins qu'il y a une section trophées sur ce site... ca serait ptete le moment de l'utiliser...
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
2 sept. 2005 à 20:34
(mais bon jferai ptet un tour sur codes sources de temps à autres lol :))
TheWhiteShadow Messages postés 135 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 avril 2006
2 sept. 2005 à 20:13
oui dommage... lol. le problème c'est aussi que je balance du texte (en anglais en plus...), des zip, tar.gz, image, mais on ne peut pas voir simplement / tester, de quoi il s'agit :(

mais bah la rentrée pour moi c'était aujourd'hui, je dois donc vous dire au revoir!

++ guinux
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
2 sept. 2005 à 14:05
Farpaitement impressionnant, désolé de ne pas être en mesure de pondre un commentaire plus construit que ça :(.
Rejoignez-nous