| | Renverser la vue de bas en haut | |
| | Auteur | Message |
---|
bobo Pas mal
Messages : 38
| Sujet: Renverser la vue de bas en haut Jeu 31 Aoû 2006 - 22:01 | |
| Bonjour à tous ! Je cherche un moyen de "renverser" la vue de bas en haut (un peu comme s'il existait une variable view_yscale=-1 ...) Donc j'ai trouvé une solution avec une surface : 1) Je désactive l'affichage automatique des évènements DRAW et je créé une surface de la taille de ma vue. CREATE event - Code:
-
set_automatic_draw(0) S=surface_create(320,240)
2) Je redessine les éléments d'affichage sur la surface puis j'affiche cette surface à l'écran mais "renversée" (grâce à l'argument -1 pour yscale dans draw_surface_ext) et je rafraichis l'écran : END STEP event - Code:
-
surface_set_target(S) screen_redraw() surface_reset_target() draw_surface_ext(S,view_xview,view_yview+240,1,-1,0,c_white,1) screen_refresh() Cela fonctionne mais le problème vient du fait que la vue ne semble plus être prise en compte dans l'affichage (l'objet sensé être suivi par elle ne l'est plus). J'ai cru comprendre (sur le forum officiel) que la fonction set_automatic_draw(0) annulait l'utilisation des vues et de leurs propriétés. Bref, voyez-vous un autre moyen d'y arriver ? avec (au hasard) une dll ? une idée de génie ? |
| | | daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Renverser la vue de bas en haut Ven 1 Sep 2006 - 12:35 | |
| Ben tu as view_angle, mais ça ne résout pas forcément ton problème. J'utilise les surfaces depuis peu, mais je ne crois pas que set_automatic_draw(0) désactive l'utilisation des views, puisque lorsque j'en met une dans un jeu les views fonctionnent toujours, je crois simple que ton bug vient du fait que tu n'utilises qu'une surface, l'idée c'est toujours d'en utilisé deux, une où on capture la room, et l'autre ou on affiche cette capture mais dans laquelle on ajoute ou change quelque chose, ici on changerait le scale. Je te fais un exemple rapidement. Edit: Je me suis rendu compte que le fait de changer le scale explose tout alors que le blending fonctionne, et c'est parce qu'en fait on essaie de faire afficher la room par dessus la vue... Je tente tout de même de faire un exemple. _________________ Mon CV : fr - de - en Tous Ensemble! Réalisons! |
| | | bobo Pas mal
Messages : 38
| Sujet: Re: Renverser la vue de bas en haut Ven 1 Sep 2006 - 16:57 | |
| Merci daminetreg, Effectivement la view n'est pas désactivée, le problème vient du fait qu'il n'y a pas de fonction permettant de dessiner cette view dans la surface (pas à ma connaissance). On ne peut que dessiner la room dans la surface avec screen_redraw(). J'ai donc suivi ton conseil en créant une première surface S1 de la taille de la room où je redessine entièrement la room (screen_redraw). Puis je dessine cette surface dans une deuxième surface S2 de la taille de la view, en utilisant les coordonnées de la view pour décaler l'affichage. Cela donne : CREATE event - Code:
-
set_automatic_draw(0) S1=surface_create(384,240) // taille de la room S2=surface_create(320,240) // taille de la view END STEP event - Code:
-
surface_set_target(S1) screen_redraw() surface_reset_target()
surface_set_target(S2) draw_surface(S1,-view_xview,-view_yview) surface_reset_target()
draw_surface_ext(S2,view_xview,view_yview+240,1,-1,0,c_white,1) screen_refresh() L'effet obtenu est le bon (mis à part une sorte de "bavure" de couleur à gauche de l'écran ...!?) Seulement dans mon exemple la room est très petite, et j'ai peur que cela devienne aventureux (en terme de ressource) si on doit utiliser une surface de la taille d'une très grande room... |
| | | daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Renverser la vue de bas en haut Ven 1 Sep 2006 - 19:08 | |
| Non les surfaces sont stoquées en mémoire vidéo, donc si le joueur a une bonne carte graphique ça ne devrait pas causer de problème. J'étais arriver à la même conclusion que toi, justement à cause du fait qu'on ne puisse pas afficher seulement la vue, cependant es tu sûr que le code que tu as posté est fonctionnel? Je n'ai pas essayé mais j'ai un leger doute, car en essayant moi même de faire un truc qui y ressemblait ça n'avait pas fonctionné. Enfin bon je dois me tromper. Sinon je crois que j'avais une dll pour retourner l'ecran tout entier (changer la config de la carte graphique, mais ça n'est pas un truc dont on ressort forcément sans dommages. _________________ Mon CV : fr - de - en Tous Ensemble! Réalisons! |
| | | bobo Pas mal
Messages : 38
| Sujet: Re: Renverser la vue de bas en haut Ven 1 Sep 2006 - 21:52 | |
| - Citation :
- cependant es tu sûr que le code que tu as posté est fonctionnel?
Tu m'as mis le doute alors j'ai testé un peu mon code et, effectivement, c'est un miracle que ça fonctionne car dès que je modifie la hauteur de la room ou si je passe en mode fenêtré, ça ne marche plus. :snif2: En particulier j'affiche mon jeu avec une résolution 320*240, mais dès que je passe en 1024*768 la surface est affichée 10 fois plus grosse et ne rentre pas dans la vue (les pixels sont énormes). J'ai essayé window_set_region_size mais ça ne change rien. Bref, même dans mon exemple il subsiste un amas de bouts de sprites sur le bord gauche de l'écran. Je pense que c'est dû au fait qu'il doit y avoir un décalage d'un step entre l'affichage DRAW désactivé et l'affichage de la surface modifiée dans le END STEP suivant, et je ne voit pas vraiment comment y remédier. Donc j'ai l'impression d'être dans une impasse.... Dis-moi à ton avis est-ce possible de créer une dll qui manipule les views ? (sans toucher à la carte graphique ) Et est-ce à la portée du programmeur occasionnel du dimanche ? |
| | | daminetreg Administrateur
Messages : 16998 Localisation : Siege du CBNA! Projet Actuel : Site Web du CBNA, version beta :
| Sujet: Re: Renverser la vue de bas en haut Ven 1 Sep 2006 - 22:11 | |
| Tout est à la portée du programmeur occasionel, cependant une dll qui manipule les views serait fort, parce que les views étant des fonctions préconçues je ne pense pas qu'on puisse les manipuler autrement qu'avec ces fonctions déjà existantes. Je vais voir s'il est possible en bricolant de renverser une view. Et sinon j'essaierai à nouveau de voir pour les surfaces. _________________ Mon CV : fr - de - en Tous Ensemble! Réalisons! |
| | | Contenu sponsorisé
| Sujet: Re: Renverser la vue de bas en haut | |
| |
| | | | Renverser la vue de bas en haut | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |