jQuery
En savoir plus
Adobe Flex & Flash
En savoir plus
ASP.NET
En savoir plus

Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !
Le problème de ce sujet a été résolu
| Page 1 | |||||||
| Auteur | Message | ||||||
|---|---|---|---|---|---|---|---|
| 1 visiteur sur ce sujet (1 Anonyme) | |||||||
| Page 1 | |||||||
sylvainmahe
|
# Posté le 31/03/2010 à 21:16:07 | ||||||
|
Groupe : Bannis
|
Bonjour,
Dans ce tuto: http://www.siteduzero.com/tutoriel-3-5594-les-images.html J'ai actuelement un problème pour récuperer la taille de mon image. Quand j'execute ce code: Code : C++
Le compilateur m'indique une erreur ici: irr::core::dimension2d<u32>(640,480),32); et il dit: `u32' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) De même la fonction pour récuperer les dimensions de l'image n'as jamais fonctionné une seule fois! main.cpp conversion from `const irr::core::dimension2d<irr::u32>' to non-scalar type `irr::core::dimension2d<irr::s32>' requested Comment faire? C'est la copie conforme du tutorial mais ca ne veux pas compiler?
Édité
le 31/03/2010 à 21:57:57
par sylvainmahe
|
||||||
| Publicité | # Posté le 31/03/2010 à 21:16:07 | ||||||
|
|
|||||||
OSasuke
|
# Posté le 31/03/2010 à 21:29:09 | ||||||
|
|
Le problème c'est que t'a version et celle du tuto ne sont pas les mêmes peut-être.
![]()
Édité
le 31/03/2010 à 21:40:50
par OSasuke
|
||||||
bluelink
|
# Posté le 31/03/2010 à 21:31:38 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Citation : sylvafilms
Le compilateur m'indique une erreur ici: irr::core::dimension2d<u32>(640,480),32); et il dit: `u32' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) t'as oublier le namespace irr:: avant u32 Citation : sylvafilms De même la fonction pour récuperer les dimensions de l'image n'as jamais fonctionné une seule fois! main.cpp conversion from `const irr::core::dimension2d<irr::u32>' to non-scalar type `irr::core::dimension2d<irr::s32>' requested remplace irr::u32 par irr::s32 à la ligne 8, cette erreur est due au fait que suivant la version d'irrlicht, on utilise u32 ou s32 pour donne sa taille à la fenêtre. Edit : grillé
Édité
le 31/03/2010 à 21:32:09
par bluelink
|
||||||
OSasuke
|
# Posté le 31/03/2010 à 21:37:29 | ||||||
|
|
|||||||
bluelink
|
# Posté le 31/03/2010 à 21:41:19 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Dans le code oui, mais là non :
Citation : sylvafilms Le compilateur m'indique une erreur ici: irr::core::dimension2d<u32>(640,480),32); Donc je préfère préciser. |
||||||
sylvainmahe
|
# Posté le 31/03/2010 à 21:51:46 | ||||||
|
Groupe : Bannis
|
Ok, merci, j'avais remplacé tous les s par u et ca m'indiquait une autre erreur...
Je vais réésayer. edit: Mais quel boulet en plus je ne vous donne pas le bon code la haut, attendez ![]() Voila donc u ou s, ca ne change rien, impossible de compiler ce code: Code : C++
`u32' undeclared (first use this function) no matching function for call to `irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*&, irr::core::vector2d<irr::u32>&, irr::core::rect<irr::u32>&, int, irr::video::SColor, bool)' note C:\Dev-Cpp\mingw32\include\IRR\IVideoDriver.h:737 candidates are: virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::vector2d<irr::s32>&) edit: Autre chose, dans sont tuto on ne peux pas quitter le programme puisque on controle la camera avec la souris, je suis sous windows xp et je suis obligé de faire un ctrl alt sup à chaque fois! Vous allez me dire, c'est peut être normal je ne suis pas encore rendu aux évenements, mais quand même, c'est galère de devoir quitter en faisant crasher le programme à chaque fois.
Édité
le 31/03/2010 à 22:05:30
par sylvainmahe
|
||||||
bluelink
|
# Posté le 31/03/2010 à 23:44:26 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Citation
`u32' undeclared (first use this function) T'as encore oublier le "irr::" 'u32' undeclared veux dire que ton compilateur ne connait pas le type u32, hors c'est tout a fait normal puisque le type complet est irr::u32. Citation Autre chose, dans sont tuto on ne peux pas quitter le programme puisque on controle la camera avec la souris, je suis sous windows xp et je suis obligé de faire un ctrl alt sup à chaque fois! Vous allez me dire, c'est peut être normal je ne suis pas encore rendu aux évenements, mais quand même, c'est galère de devoir quitter en faisant crasher le programme à chaque fois. Alt + F4 marche très bien normalement. |
||||||
sylvainmahe
|
# Posté le 01/04/2010 à 00:02:38 | ||||||
|
Groupe : Bannis
|
Ok merci, enfin ce n'est pas moi qui as oublié puisque c'est une copie du code proposé dans le tuto, j'ai juste changé image.jpg.
Sinon, dans ce code: Code : C++
Dans // Dessiner l'image Dans la boucle, je ne peux pas utiliser cette technique: Code : C++
Ca retourne les erreurs: 71 D:\Programmes\C++\irr\irr main.cpp no matching function for call to `irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*&, irr::core::vector2d<irr::u32>&, irr::core::rect<irr::u32>&, int, irr::video::SColor, bool)' note C:\Dev-Cpp\mingw32\include\IRR\IVideoDriver.h:737 candidates are: virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::vector2d<irr::s32>&) note C:\Dev-Cpp\mingw32\include\IRR\IVideoDriver.h:737 virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::vector2d<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, irr::video::SColor, bool) note C:\Dev-Cpp\mingw32\include\IRR\IVideoDriver.h:737 virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, const irr::video::SColor*, bool) D:\Programmes\C++\irr\Makefile.win [Build Error] ["irr main.o"] Error 1 Par contre: Code : C++
Fonctionne très bien, mais comme je ne veux pas indiquer à chaque fois les dimensions de mes images je souhaite utiliser la méthode qui permet de récuperer les dimensions, pourquoi cela donne ses erreurs? |
||||||
catkiller
|
# Posté le 01/04/2010 à 00:07:57 | ||||||
Une 'tite sieste d'1h60 ?![]()
|
Personnellement J'ai le même problème. C'est un problème de version (ou l'auteur qui a très mal fait son travail mais ça m'étonnerais).
Dans le code du tuto, ça plante comme tu l'as décrit. Si on change les types ne correspondent plus (je sais plus où) et si on change aussi l'autre, on le même problème avec une autre fonction. Résultat, trois solutions : _Sois t'es un dieu de la prog et tu modifies et recompiles Irrlicht, mais dans ce cas tu ne serais pas là _Sois tu reviens à la version du tuto (1.5. des poussières, je sais plus exactement), ce que je trouve dommage. _Sois tu te sers des tutos des développeurs. Si tu les trouves en Français tant mieux, mais il y a de fortes chances pour que tu doives travailler un peu ton anglais. Personnellement je prefere la troisieme solution A Arles on marche tranquille, à Fourques on travaille tranquille : dans l'atelier y'a que le bois qui travaille |
||||||
bluelink
|
# Posté le 01/04/2010 à 17:41:39 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
J'ai reporté l'erreur du u32 sans irr::, elle devrait être corrigé prochainement.
Par contre la version la plus récente d'Irrlicht utilise bien u32 pour déclarer les dimensions de la fenêtre (c'est d'ailleurs plus logique). Donc si tu dois écrire s32, c'est ta version la plus vieille, le tutoriel est à jour de ce côté là.
|
||||||
sylvainmahe
|
# Posté le 01/04/2010 à 21:46:19 | ||||||
|
Groupe : Bannis
|
Ok merci pour vos réponses.
J'utilise bien la derniere version de la bibliothèque, pouvez vous me dire comment ce fait t'il dans mon dernier post que ce code ne fonctionne pas si j'utilise u ou s s'il vous plait? Code : C++
C'est quand même curieux c'est la copie conforme du tuto mais si toi @bluelink tu dit que ca fonctionne? Moi ca me met toutes les erreurs cités plus haut, tout le reste du tuto avant cette partie qui nous montre comment récup la taille d'une image fonctionne.
Édité
le 01/04/2010 à 21:47:11
par sylvainmahe
|
||||||
bluelink
|
# Posté le 01/04/2010 à 22:06:41 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Tu les as lu les erreurs ? c'est quand même assez explicite :
no matching function for call to `irr::video::IVideoDriver::draw2DImage(irr::video::ITexture*&, irr::core::vector2d<irr::u32>&, irr::core::rect<irr::u32>&, int, irr::video::SColor, bool)' candidates are: virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::vector2d<irr::s32>&) virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::vector2d<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, irr::video::SColor, bool) virtual void irr::video::IVideoDriver::draw2DImage(const irr::video::ITexture*, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>&, const irr::core::rect<irr::s32>*, const irr::video::SColor*, bool) Ca signifie que la fonction que tu essaye d'utiliser existe pas. A la place utilise une des trois qu'il te propose après "candidates are :" Là tu compare bien et tu vois que l'erreur se trouve au quatrième paramètre, tu lui envoi un int à la place d'un rect<s32> Edit : Oups, j'ai lu un peu trop vite Là tu compare bien et tu vois que l'erreur vient du fait que tu lui envois toujours des u32 pour le deuxième et le troisième paramètre. Et quand tu dis dernière version, c'est laquelle exactement ? 1.7.1 ? trunk du SVN ?
Édité
le 01/04/2010 à 22:11:56
par bluelink
|
||||||
sylvainmahe
|
# Posté le 01/04/2010 à 22:19:22 | ||||||
|
Groupe : Bannis
|
Je lui envois ce qu'il y a dans le tuto!
Et sinon pour les erreur, je ne vois que des lettres et des chiffres partout sans rien comprendre... La version c'est la derniere sur le site d'irrlicht: irrlicht-1.7.1 trunk du SVN? Euh, ca veux dire quoi?
Édité
le 01/04/2010 à 22:19:49
par sylvainmahe
|
||||||
bluelink
|
# Posté le 01/04/2010 à 22:30:30 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
les erreurs, c'est pas très compliqué, c'est de l'anglais :
"no matching function for call" = "pas de fonction avec ce prototype" et là il te sort le prototype de la fonction que tu essaie d'appeler. "candidates are :" = "par contre, y'a bien celles-ci :" et là il te sort celles qui s'appellent pareil et qui fonctionnent. Pour la version, tu dois te tromper, la version 1.7.1 prends bien des u32 à la création de la fenêtre et des s32 pour Draw2DImage. Donc je te conseille vivement de mettre à jour à la dernière version, les codes donnés dans le tuto marcheront, ceci dis c'est pas pour ça qu'il faut les recopier bêtement Pour le trunk du SVN, c'est la version sur laquelle travaille les développeurs d'irrlicht, en la compilant toi même, ça te permet d'avoir la version la plus à jour possible (1.8 actuellement par exemple), mais t'en as pas besoin dans l'immédiat
|
||||||
sylvainmahe
|
# Posté le 01/04/2010 à 22:33:36 | ||||||
|
Groupe : Bannis
|
Dès que je met s pour ca ca ne veux plus du tout compiler:
Code : C++
|
||||||
bluelink
|
# Posté le 01/04/2010 à 22:40:58 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
|||||||
sylvainmahe
|
# Posté le 01/04/2010 à 22:41:40 | ||||||
|
Groupe : Bannis
|
Ca met les messages cités plus haut.
Attend je vais encore faire un copier coller: Ca met les messages cités plus haut. Ca met les messages cités plus haut. Ca met les messages cités plus haut. Ca met les messages cités plus haut. Ca met les messages cités plus haut. Voila, alors s ou u, pourquoi le code du tuto ne fonctionne pas du tout?
Édité
le 01/04/2010 à 22:43:01
par sylvainmahe
|
||||||
bluelink
|
# Posté le 01/04/2010 à 22:43:50 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
|||||||
sylvainmahe
|
# Posté le 01/04/2010 à 22:46:28 | ||||||
|
Groupe : Bannis
|
En 1.8?
J'ai déja la 1.7 ![]() Il y a un truc qu'il faut que je comprenne la, imagine un type qui a fait un programme de 500000 lignes avec la version 1.5, il ne peux pas mettre à jour vers la version 1.7? Il doit retaper entierement son programme? |
||||||
bluelink
|
# Posté le 01/04/2010 à 22:56:50 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
non je parlais de la 1.7, mais en fait je me suis emmêler les pinceaux aussi :
video::ITexture::getSize() te renvoi un core::dimension2d<u32> video::IVideoDriver::draw2DImage() prends en paramètre un core::position2d<s32> Donc en fait tu ne peux pas le renvoyer directement, il faut faire une petite conversion entre les deux. Et non, pas besoin de refaire tout le programme à chaque version, la plupart du temps, ce sont des changements qui prennent entre quelque secondes et quelques heures maximum à appliquer. |
||||||
sylvainmahe
|
# Posté le 01/04/2010 à 23:00:15 | ||||||
|
Groupe : Bannis
|
Bon je crois que c'est trop compliqué, j'arrete la.
Je préfere le c et sdl ca c'est facile.
|
||||||
bluelink
|
# Posté le 01/04/2010 à 23:04:28 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Bah faut pas se décourage comme ça, en gros ça te donne ça :
Code : C++
et Code : C++
|
||||||
sylvainmahe
|
# Posté le 02/04/2010 à 02:36:50 | ||||||
|
Groupe : Bannis
|
Ok merci, la ca fonctionne très bien.
J'aurais voulu savoir au passage si il existe une lib simple pour afficher un objet 3d (un seul) dans une fenêtre en c? Et peut-on mettre du code c dans un programme c++? |
||||||
bluelink
|
# Posté le 02/04/2010 à 07:07:08 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
|||||||
sylvainmahe
|
# Posté le 02/04/2010 à 16:17:48 | ||||||
|
Groupe : Bannis
|
Ok merci pour ta réponse.
Bon je crois que le mieux est d'expliquer ce que je veux faire pour voir ce qu'on peux me conseiller au mieux. Je veux dans un jeu: -afficher un décor en 2d précalculée en background (la vue d'une caméra fixe, rendu qui sort directement du logiciel de 3d) -afficher un personnage en 3d par dessus ce background -ce servir du décor 3d (polygonnes qui viennent du logiciel de 3d) pour les colisions (colisions très simples, ca bloque juste l'axe x ou y du personnage en translation sans même arrêter son animation) -ce servir de ce même décor pour cacher le personnage quand un objet ce trouve devant lui, il faut afficher par dessus le personnage le background en partie, exemples: les pieds du personnage cachés par la table des parties du personnage masqués par les gardes corps En réalité c'est juste le background qui deviens visible à travers le personnage quand un polygonne 3d se trouve devant lui. Ou bien comme expliqué ca peux très bien être une 2ème image, la même que le background, qui serait affiché à cet endroit précis par dessus le perso. Pour l'instant j'en suis la mais je voudrais vraiment passer à quelque chose au dessus et passer d'une vue fps à une vue avec une caméra externe ou on vois vraiment le personnage qu'on dirige. Voila si vous pouvez me conseiller. Merci d'avance. |
||||||
bluelink
|
# Posté le 02/04/2010 à 22:05:09 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
Globalement, je pense que ton jeu utilises un système de scènes (genre, une pièce dans une maison = une scène) et en bougeant le personnage, tu passes de scène en scène.
Déjà ça te fait ta première classe : Scene Ensuite, dans chaque scène tu as : - Un fond, le personnage ne peux pas passer derrière - Les objets du décors en 2D, le personnage peut passer devant ou derrière, chaque objet à donc une valeur de profondeur dans la scène. - La représentation des objets dans l'espace 3D, la plupart du temps, un boite, pour gérer les collisions uniquement. - Et enfin ton personnage, qui à lui aussi une valeur de profondeur dans la scène puisqu'il évolue dans un espace en 3D. Pour ce qui est des collisions d'abord, tu te sers juste des boites représentatives des objets et de ton personnage. Et pour l'affichage, tu te fait une liste de trucs à afficher (objets + personnages), tu la tri par leur coordonnées en profondeur, puis tu affiche le fond, et la liste d'objets triée. |
||||||
sylvainmahe
|
# Posté le 02/04/2010 à 22:39:42 | ||||||
|
Groupe : Bannis
|
Ok, mais tout ca je sais c'était plus d'un point de vue programmation de savoir si tel ou tel moteur peut m'afficher une image à priori cachée quand on superpose deux objets 3d par rapport à la caméra.
Enfin bref sujet résolu, merci de m'avoir aidé. |
||||||
bluelink
|
# Posté le 02/04/2010 à 22:46:36 | ||||||
T**** me I'm a Zér0 !![]()
Ville : Arès |
|||||||
Retour au forum "Langage C++" ou à la liste des forums
