#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 directementsmile

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 riensmile

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é à çasad
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

Dommagesadet le lookat, ne fonctionne toujours pas ?

ps: j'en profite pour apprendre un peuwink


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 passmile
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 visionwink

edit: merci c'est gentil de t'y intéressersmile
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égerwinkje 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 renfortwink


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 avecsmile
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 sinonwink
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 scopewink

  • > 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

winkbon 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 riensmile

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 presquewink


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 riresmile


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 modifieraissmile

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 -lGLsad

edit:MDR


Hors ligne


OptionsLiens officielsCaractéristiquesStatistiquesCommunauté
Préférences cookies
Corrections
irrlicht
irrklang
irredit
irrxml
Propulsé par Django
xhtml 1.0
css 2.1
884 membres
1441 sujets
11339 messages
Dernier membre inscrit: Saidov17
115 invités en ligne
membre en ligne: -
RSS Feed