20-08-2010 14:33:53
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
bon j'ai pas trop envie de papoter donc je rentre dans le sujet directement ![]()
je me suis lancé dans un moteur de jeux orienté side-scrolling il y a un bon mois, quasiment tout marche, sauf la camera.
les deux soucis que j'ai sont:
- impossible d'utiliser gluPerspective, on ne voit plus rien, donc limité à glOrtho
- impossible de changer la camera de place/rotation
le soucis n'est pas le manque de tuto/explication mais, les exemples ne marchent pas dans mon cas, allez savoir pourquoi !
un exemple du code vraiment simplifié de ce que j'utilise:
Code c++ :
glClearColor(...);
glClear(GL\\\\_COLOR\\\\_BIT | GL\\\\_DEPTH\\\\_BUFFER\\\\_BIT);
glPushMatrix();
glMatrixMode(GL\\\\_PROJECTION);
glLoadIdentity();
mode == CWM\\\\_ORTHOGRAPHIC ? glOrtho(0, screen->getInfo().size.width, screen->getInfo().size.height, 0, nears, fars) :
gluPerspective(fovs, asps, nears, fars);
glRotatef(-rot.x, 0,0,1);
glRotatef(-rot.y, 0,1,0);
glRotatef(-rot.z, 1,0,0);
glTranslatef(-pos.x, -pos.y, -pos.z);
glMatrixMode(GL\\\\_MODELVIEW);
glLoadIdentity();
glPushMatrix();
glEnable(GL\\\\_BLEND);
glBlendFunc(GL\\\\_SRC\\\\_ALPHA, GL\\\\_ONE\\\\_MINUS\\\\_SRC\\\\_ALPHA);
glPushAttrib(GL\\\\_ENABLE\\\\_BIT);
// shade model + glEnable -> antialiasing mode
//rendu classic de l'object
glPopAttrib();
glPopMatrix();
glPopMatrix();
glWSwapBuffer(display, window);
glFlush();
pour ce qui est de la position/rotation de la camera, gluLookAt ne fonctionne pas non plus, pos.z > 10 ? gluLookAt = on ne voit plus rien
edit: variable pour gluPerspective: fovs = 45.f, asps = window.width/(float)window.height, nears = -1.f, fars = 2500.f;
cela dit glOrtho semble limiter a 10.f pour fars ... une autre bizarrerie
Hors ligne
22-08-2010 09:42:51
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
bon ... pour une fois que je demande quelque chose ... ?
TMyke peut-être ? tu a déjà fait un moteur 3d non ? ![]()
Hors ligne
22-08-2010 14:38:06
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
J'aimerai bien t'aider mais je n'ai jamais touché à ça ![]()
Au risque de dire une bêtise(pour faire patienter) as tu testé nears avec une valeur positive, genre 0.1f ?
Hors ligne
22-08-2010 15:29:00
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
oui oui, j'ai testé ^^'
la valeur négative c'est pour voir les éléments en 0.f de l'axe z, ( exemple la gui )
Hors ligne
22-08-2010 16:09:48
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Dommage
et le lookat, ne fonctionne toujours pas ?
ps: j'en profite pour apprendre un peu ![]()
Hors ligne
22-08-2010 16:22:55
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
ba non toujours pas ![]()
il doit y avoir une transformation de matrice qu'il n'aime pas, quelque part ...
en tout cas ça fait tout foirer !
bref si tu veux apprendre je te passe mes sources !
<< lien censuré :') >> , elles ont deux jours, ça devrait aller ? ![]()
enfin si tu attends 10min je les mets à jour ? j'ai corrigé des bugs, et rajouté des fonctions pour la portabilité du truc
Hors ligne
22-08-2010 16:25:58
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
ok je vais vois ce soir, sinon essai de mettre ça après glMatrixMode(modelview:
glRotatef(-rot.x, 0,0,1);
glRotatef(-rot.y, 0,1,0);
glRotatef(-rot.z, 1,0,0);
glTranslatef(-pos.x, -pos.y, -pos.z);
+lookat
Hors ligne
22-08-2010 16:35:06
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
c'est pareil, et puis disons que ce n'est pas facile de voir quand la vision ne dépasse pas les 1000.f ( et je suis en 10 .... )
la moindre rotation ou position trop "importante" et je ne vois plus rien ...
si ça se trouve ça marche ... mais .. !
quant à gluLookAt, lui c'est sûr il ne marche pas, même sans transformation de matrice au préalable ...
le premier problème à résoudre est de passer en perspective, ça devrait corriger le problème de la distance de vision ![]()
edit: merci c'est gentil de t'y intéresser ![]()
tu ne saurais pas comment calculer une matrice de projection ? ![]()
à la rigueur je peux faire une matrice perso, et la passer à opengl ...
Hors ligne
22-08-2010 21:53:17
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
heu t'a pas un code plus léger
je me perd là dans tout ces fichiers, pourrai-tu isoler la partie qui te pose soucis ?
j'ai essayé de compilé mais error core 2 for -match=switch ?!
sinon je lance l'exe fonctionne bien'apperement
Magun Ecris:
tu ne saurait pas comment calculer une matrice de projection ?
Tu ne veut tout de même pas faire fondre mais neurones lol non là il faut attendre du renfort
Hors ligne
22-08-2010 22:15:07
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
les deux principaux fichiers sont camera.* dans externe/node/camera et draw.* dans externe/texture qui ont un rapport direct avec ![]()
sinon pour le code minimal ouais ... je veux bien, mais dans le principe ( pour le rendu ) voir premier post.
pour -match ... je suppose que tu es en x86 et non x86_64 (linux) ? de tout façon il faut aller voir dans les options de compilation et désactiver la prise en charge intel core 2/atlhon 64 ...
je mets à jour tout de suite j'espère que ça ira mieux pour compiler...
ps: tu utilises codeblocks ? 10.05 ? mets à jour sinon ![]()
edit: << lien censuré :') >> faut compiler si tu veux tester, je travaille rarement sous windows
edit 2: bon et ben la position et la rotation ont l'air de marcher depuis le début en fait ... il y avait une petit erreur sur la rotation, mais pas méchante ( x-z inversés )
bref peut-être fatigué, ça ne m'étonnerais guère ...
mais ça ne change rien pour gluPerpective °°'
Hors ligne
22-08-2010 22:38:32
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
bein j'ai seven 64 mais codeblocks est installé dans x86 en version 8.x, je vais mettre tout ça à jour
edit:maintenant j'ai une erreur à __PARAM_NAME_INFO_1_0(__DECLARE_PARAM_TRAITS);
il me dit error extra ';'
edit2 quand j'enlève le point virgule ça bloque plus loin à if(gl && i != GRC_0) wglShareLists(gl[0],gl[e]);
'e' was not declared in this scope
Hors ligne
22-08-2010 23:07:32
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
ah oui ... bon désolé du soucis ça vient d'opencl que je n'ai pas encore implanté
le plus rapide c'est que tu commentes
/extene/core/define.h enlève l'include d'opencl
/externe/core/device/device.* supprime la fonction getOpenCL et la variable cl::Context et aussi commentes ocl = 0 dans initOpenCL
Hors ligne
22-08-2010 23:15:45
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
ok c'est bon mais 'e' n'est toujours pas déclaré dans ce scope ![]()
- > if(gl
Hors ligne
22-08-2010 23:16:50
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
oh oui remplace par i :']
edit: euh bizarre ça compile pour moi ... j'ai oublié une save peut-être *-*
Hors ligne
22-08-2010 23:18:13
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
bon maintenant error extra ';'
enum dInitODEFlags {
dInitFlagManualThreadCleanup = 0x00000001, //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
};
Hors ligne
22-08-2010 23:23:40
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
il y a une virgule de trop a la fin de 0x0..... qui cause un coma a la fin
je n'ai pas cette erreur pourtant, juste un warning...
edit: si ça t'énerve arrête j'aime pas souler les gens ^^' ... c'est aussi pour ça que je demande rien ![]()
Hors ligne
22-08-2010 23:35:55
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
après une quarantaine de coma et une centaine d'extra il ne trouve pas -lGL, j'y suis presque ![]()
Hors ligne
22-08-2010 23:37:30
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
ok alors dernière étape, tu compiles en mode linux-i686 puis passe en windows ... ! ![]()
( build target à côté du bouton de compilation / debug )
Hors ligne
22-08-2010 23:41:37
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
Magun Ecris:
... depuis le depuis ...
Oui mais encore ?
Magun Ecris:
si sa t'énerve arrete
Tu rigole ou quoi ? j'ai le fou rire
Hors ligne
22-08-2010 23:43:49
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
c'est de ma faute le projet est sauvegardé sous linux donc l'option est aussi sauvegardée
je pensais que tu modifierais ![]()
bref alors tu as un exécutable ?
Hors ligne
22-08-2010 23:45:26
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
bein non j'ai pas compris ce que tu voulais dire plus haut, je compile en linux-i686 et après?
Hors ligne
22-08-2010 23:49:04
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
et ben faut changer, il y a un profil par os, et donc sélectionner celui pour windows ( c'est pour les lib )
il y a une combobox ( une liste quand on clique dessus ), tu devrais avoir ça intitulé << build target: linux-i686 >>
en haut de ton interface ! et à côté des boutons pour compiler
Hors ligne
22-08-2010 23:50:02
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
bein c'est en mode build target->windows
Hors ligne
22-08-2010 23:50:40
- Magun
- Administrateurs

- Date d'inscription:
- Messages: 910
- IP: 188.93.45.30
- Courriel Site web
ben y a plus qu'a compiler ...
Hors ligne
22-08-2010 23:51:34
- nico
- Administrateurs

- Date d'inscription:
- Messages: 563
- IP: 82.232.128.163
- Courriel
bein il ne found pas -lGL ![]()
edit:MDR
Hors ligne



