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:
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
Dernière modification par Magun (20-08-2010 16:36:38)
Hors ligne
bon ... pour une fois que je demande quelque chose ... ?
TMyke peut-être ? tu a déjà fait un moteur 3d non ?
Hors ligne
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
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
Dommage et le lookat, ne fonctionne toujours pas ?
ps: j'en profite pour apprendre un peu
Hors ligne
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
Dernière modification par Magun (23-08-2010 02:08:20)
Hors ligne
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
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 ...
Dernière modification par Magun (22-08-2010 18:37:53)
Hors ligne
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 :
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
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 °°'
Dernière modification par Magun (23-08-2010 02:08:37)
Hors ligne
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] && i != GRC_0) wglShareLists(gl[0],gl[e]);
'e' was not declared in this scope
Hors ligne
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
ok c'est bon mais 'e' n'est toujours pas déclaré dans ce scope
-> if(gl[i] && i != GRC_0) wglShareLists(gl[0],gl[e]);
Hors ligne
oh oui remplace par i :']
edit: euh bizarre ça compile pour moi ... j'ai oublié une save peut-être *-*
Dernière modification par Magun (23-08-2010 01:18:27)
Hors ligne
bon maintenant error extra ';'
enum dInitODEFlags {
dInitFlagManualThreadCleanup = 0x00000001, //@< Thread local data is to be cleared explicitly on @c dCleanupODEAllDataForThread function call
};
Hors ligne
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
Dernière modification par Magun (23-08-2010 01:27:09)
Hors ligne
après une quarantaine de coma et une centaine d'extra il ne trouve pas -lGL, j'y suis presque
Hors ligne
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
Magun :
... depuis le depuis ...
Oui mais encore ?
Magun :
si sa t'énerve arrete
Tu rigole ou quoi ? j'ai le fou rire
Hors ligne
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 ?
Dernière modification par Magun (23-08-2010 01:44:30)
Hors ligne
bein non j'ai pas compris ce que tu voulais dire plus haut, je compile en linux-i686 et après?
Hors ligne
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
bein c'est en mode build target->windows
Hors ligne
ben y a plus qu'a compiler ...
Hors ligne
bein il ne found pas -lGL
edit:MDR
Hors ligne