#1 

20-08-2010 14:33:53

Magun
Administrateurs
Avatar de Magun
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 smile

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 smile

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


#2 

22-08-2010 09:42:51

Magun
Administrateurs
Avatar de Magun
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 ? smile

Hors ligne


#3 

22-08-2010 14:38:06

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

J'aimerai bien t'aider mais je n'ai jamais touché à ça sad
Au risque de dire une bêtise(pour faire patienter) as tu testé nears avec une valeur positive, genre 0.1f ?


Hors ligne


#4 

22-08-2010 15:29:00

Magun
Administrateurs
Avatar de Magun
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


#5 

22-08-2010 16:09:48

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Dommage sad et le lookat, ne fonctionne toujours pas ?

ps: j'en profite pour apprendre un peu wink


Hors ligne


#6 

22-08-2010 16:22:55

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

ba non toujours pas smile
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 ? wink
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


#7 

22-08-2010 16:25:58

nico
Administrateurs
Avatar de nico
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


#8 

22-08-2010 16:35:06

Magun
Administrateurs
Avatar de Magun
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 wink

edit: merci c'est gentil de t'y intéresser smile
tu ne saurais pas comment calculer une matrice de projection ? yikes
à la rigueur je peux faire une matrice perso, et la passer à opengl ...

Hors ligne


#9 

22-08-2010 21:53:17

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

heu t'a pas un code plus léger wink 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 ? yikes

Tu ne veut tout de même pas faire fondre mais neurones lol non là il faut attendre du renfort wink


Hors ligne


#10 

22-08-2010 22:15:07

Magun
Administrateurs
Avatar de Magun
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 smile
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 wink
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


#11 

22-08-2010 22:38:32

nico
Administrateurs
Avatar de nico
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


#12 

22-08-2010 23:07:32

Magun
Administrateurs
Avatar de Magun
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


#13 

22-08-2010 23:15:45

nico
Administrateurs
Avatar de nico
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 wink

  • > if(gl
&& i != GRC_0) wglShareLists(gl[0],gl[e]);


Hors ligne


#14 

22-08-2010 23:16:50

Magun
Administrateurs
Avatar de Magun
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


#15 

22-08-2010 23:18:13

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

wink bon maintenant error extra ';'
enum dInitODEFlags {
dInitFlagManualThreadCleanup = 0x00000001, //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
};


Hors ligne


#16 

22-08-2010 23:23:40

Magun
Administrateurs
Avatar de Magun
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 smile

Hors ligne


#17 

22-08-2010 23:35:55

nico
Administrateurs
Avatar de nico
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 wink


Hors ligne


#18 

22-08-2010 23:37:30

Magun
Administrateurs
Avatar de Magun
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 ... ! big_smile

( build target à côté du bouton de compilation / debug )

Hors ligne


#19 

22-08-2010 23:41:37

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

Magun Ecris:

... depuis le depuis ...

Oui mais encore ? wink

Magun Ecris:

si sa t'énerve arrete

Tu rigole ou quoi ? j'ai le fou rire smile


Hors ligne


#20 

22-08-2010 23:43:49

Magun
Administrateurs
Avatar de Magun
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 smile

bref alors tu as un exécutable ?

Hors ligne


#21 

22-08-2010 23:45:26

nico
Administrateurs
Avatar de nico
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 

22-08-2010 23:49:04

Magun
Administrateurs
Avatar de Magun
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


#23 

22-08-2010 23:50:02

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

bein c'est en mode build target->windows


Hors ligne


#24 

22-08-2010 23:50:40

Magun
Administrateurs
Avatar de Magun
Date d'inscription:
Messages: 910
IP: 188.93.45.30
Courriel  Site web

ben y a plus qu'a compiler ...

Hors ligne


#25 

22-08-2010 23:51:34

nico
Administrateurs
Avatar de nico
Date d'inscription:
Messages: 563
IP: 82.232.128.163
Courriel

bein il ne found pas -lGL sad

edit:MDR


Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1440 sujets
11337 messages
Dernier membre inscrit: Saidov17
119 invités en ligne
membre en ligne: -
RSS Feed