AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
-40%
Le deal à ne pas rater :
-40% sur le Pack Gaming Mario PDP Manette filaire + Casque filaire ...
29.99 € 49.99 €
Voir le deal

 

 Renverser la vue de bas en haut

Aller en bas 
2 participants
AuteurMessage
bobo
Pas mal
bobo


Messages : 38

Renverser la vue de bas en haut Empty
MessageSujet: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyJeu 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 ?

_________________
GML GLOSSAIRE (Fonctions et Variables)
***en construction***
Revenir en haut Aller en bas
http://gml-glossaire.over-blog.com/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyVen 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. clinoeuil

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
Le CBNA Tous Ensemble! Réalisons!
Renverser la vue de bas en haut U3dfr2
Revenir en haut Aller en bas
http://lecbna.org/
bobo
Pas mal
bobo


Messages : 38

Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyVen 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...

_________________
GML GLOSSAIRE (Fonctions et Variables)
***en construction***
Revenir en haut Aller en bas
http://gml-glossaire.over-blog.com/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyVen 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. happy1

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
Le CBNA Tous Ensemble! Réalisons!
Renverser la vue de bas en haut U3dfr2
Revenir en haut Aller en bas
http://lecbna.org/
bobo
Pas mal
bobo


Messages : 38

Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyVen 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 Wink )
Et est-ce à la portée du programmeur occasionnel du dimanche ?

_________________
GML GLOSSAIRE (Fonctions et Variables)
***en construction***
Revenir en haut Aller en bas
http://gml-glossaire.over-blog.com/
daminetreg
Administrateur
daminetreg


Messages : 16998
Localisation : Siege du CBNA!
Projet Actuel : Site Web du CBNA, version beta :

Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut EmptyVen 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. happy1 Et sinon j'essaierai à nouveau de voir pour les surfaces.

_________________
Mon CV : fr - de - en
Le CBNA Tous Ensemble! Réalisons!
Renverser la vue de bas en haut U3dfr2
Revenir en haut Aller en bas
http://lecbna.org/
Contenu sponsorisé





Renverser la vue de bas en haut Empty
MessageSujet: Re: Renverser la vue de bas en haut   Renverser la vue de bas en haut Empty

Revenir en haut Aller en bas
 
Renverser la vue de bas en haut
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Une pioche vue de haut
» Haut les mains!!
» Problème de collision ( sur vue de haut )
» Probleme collision haut/bas
» [Recherche] Perso vue de haut.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Entraide confirmés-
Sauter vers: