| Problème d'affichage de surfaces | |
|
|
Auteur | Message |
---|
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Problème d'affichage de surfaces Sam 11 Fév 2012 - 19:56 | |
| Bonjour. Comme j'ai récemment acheté un (bon) PC portable, j'ai voulu tester mon jeu dessus, seulement j'ai constaté que le jeu présentait des problèmes d'affichages de surfaces ! Voici l'étendue des dégâts : (à droite l'affichage sans problèmes de surfaces) Ce qui est embêtant, c'est que ça ne fait ça que sur mon PC portable ... J'ai lu sur des forums (en anglais) que le problème venait des cartes graphiques Nvidia, seulement, je n'ai pas trouvé de solution ! Je sollicite donc votre aide, ce serait dommage que je ne puisse jamais finir la démo de mon jeu (un jour peut-être ...) ! Merci d'avance. |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 20:17 | |
| Ça a l'air d'être un problème de blending. Par contre sans code je saurais pas te dire d'où peut venir le problème.
Sinon t'as essayé d'utiliser des surfaces dont la taille est en puissance de 2 ? Des fois ça viens de la ce genre de trucs, même si la rien n'est moins sur :/
|
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 21:03 | |
| Non, mais ce n'est pas un problème de code. En effet, le code marche très bien sur mon autre PC, c'est "juste" un problème de compatibilité avec les cartes graphiques Nvidia (d'après ce que j'ai lu sur les forums), mais je n'ai pas trouvé de solution ... |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 21:56 | |
| T'es sûr de ne pas avoir zappé un petit draw_clear() par exemple ? Edit: c'est possible aussi que ce soit vraiment un problème de blend mode, j'ai une solution, je te la passerai quand j'aurai mes codes sous la main |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 22:01 | |
| Bah le coup des surfaces en puissances de 2 ça dépend des cartes graphiques... a mon avis ça te couteras rien d'essayer.
|
|
| |
DarkYoshi Utilisateur confirmé: Rang **
Messages : 348 Localisation : Dans un caniveau Projet Actuel : pou pou pou dipou pwet <3
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 22:14 | |
| Et en faisant une maj de ton pilote ? J'ai eu droit a des bugs mystiques qui ont disparu grace a ça |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 22:40 | |
| Merci de vos réponses. master47:Pourquoi devrais-je faire un draw_clear ? onilink_:J'ai essayé, mais pas de changement ... DarkYoshi:Mes pilotes sont à jour ... |
|
| |
Oculus Utilisateur confirmé: Rang *****
Messages : 1688
| Sujet: Re: Problème d'affichage de surfaces Sam 11 Fév 2012 - 23:43 | |
| T'as quoi comme carte ? Comme version de GM ? Quel système ? |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Dim 12 Fév 2012 - 12:51 | |
| J'ai une carte graphique Nvidia Geforce GT 555M, avec Game Maker 8.0 sous Windows 7. |
|
| |
Bast Administrateur
Messages : 20021 Localisation : Alsace
| Sujet: Re: Problème d'affichage de surfaces Dim 12 Fév 2012 - 14:50 | |
| En admettant que tes surfaces utilisent de l'alpha et que le problème n'apparaît que sur des cartes Nvidia, alors la cause en est certainement un défaut inhérent au système de surfaces de GM qui provoque des problèmes de corruption sous certains drivers Nvidia. Par exemple, afficher un sprite A transparent par dessus un sprite B dans une surface rendra le sprite B invisible, car les valeurs d'alpha du sprite A écraseront celles du sprite B au lieu de s'y combiner. L'une des solutions à ce problème est d'exécuter ces quelques lignes juste avant le surface_reset_target, ce qui aura pour effet de maxer toutes les valeurs d'alpha et de rendre la surface totalement opaque, et donc de supprimer les artefacts de transparence. Il faudra alors user de blend modes pour séparer les différentes couleurs et reproduire un effet de transparence lors de l'affichage. - Code:
-
draw_set_blend_mode_ext(bm_src_color,bm_one); draw_set_color(c_black); draw_set_alpha(1); draw_rectangle(0,0,WIDTH,HEIGHT,0); draw_set_color(c_white); draw_set_blend_mode(bm_normal); _________________ |
|
| |
master47 Utilisateur confirmé: Rang *****
Messages : 2368 Projet Actuel :
-------------------
> PacWars
> The Perfect Pattern Studio
| Sujet: Re: Problème d'affichage de surfaces Lun 13 Fév 2012 - 11:43 | |
| ahah Bast c'est le bout de code que j'allais lui donner |
|
| |
Bast Administrateur
Messages : 20021 Localisation : Alsace
| Sujet: Re: Problème d'affichage de surfaces Mer 15 Fév 2012 - 1:12 | |
| Il m'a sauvé plus d'une fois. :) _________________ |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Sam 18 Fév 2012 - 15:15 | |
| Merci pour le code, mais ça n'a pas réglé le problème ... |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Dim 4 Mar 2012 - 17:49 | |
| Bonjour, en regardant mes anciens jeux, je viens de remarquer qu'il n'y avait pas que les surfaces qui s'affichaient mal : Là, on voit clairement qu'il y a un problème au niveau du sprite de Link, alors que sur mon ancien ordinateur il n'y en avait pas ! Donc, je ne comprends pas ... |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mer 16 Mai 2012 - 12:05 | |
| Toujours pas de solutions, que ce soit pour mon problème initial ou celui du message précédent ? |
|
| |
SPLN Utilisateur confirmé: Rang ***
Messages : 588 Localisation : Sur son ordinateur *vous vois* arrêtez de me regarder comme ça Projet Actuel : En quête de projet(s)!
Mes projets:
SP Lecteur Multimedia (Stand by)
S-Portable Graphics (demo1.8 is out! demo2.0 is planned)
SSB RPG (Stand by)
| Sujet: Re: Problème d'affichage de surfaces Mer 16 Mai 2012 - 16:25 | |
| Le problème se situe bien au niveau de la taille du sprite, nan? C'est souvent du à une position ou une valeur du sprite comme sa taille avec des décimales: x = 129.50 ;v) |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mer 16 Mai 2012 - 16:30 | |
| Merci, mais c'est étrange que le problème se déclare qu'avec mon nouveau pc, je n'ai jamais eu de problèmes semblables auparavant ... |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 2:00 | |
| N'arrivant pas à dormir, je me suis de nouveau penché sur mes problèmes, et j'ai enfin trouvé une solution ...
Pour le problème de déformation des sprites, c'est juste qu'il y avait un problème au niveau de la position. En effet, j'ai vu dans mes codes que parfois je pouvais afficher des sprites avec une position en y, par exemple, égale à a+23/2 (a étant un entier naturel) ... je n'ai pas été bon sur ce coup là.
Et pour le problème de surface, il m'a suffit d'enlever tous les surface_free(...) ... là par contre, je n'ai pas compris, mais ça marche !
Maintenant que ça marche sur mon nouveau PC, je vais devoir tester tout ça sur mon ancien PC pour voir s'il n'y a pas de problème d'affichage ... |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 11:10 | |
| Houla, étrange en effet. Perso j'ai plutôt eu le problème inverse. J'ai déjà eu des bugs d'affichages après avoir relancé le jeu et oublié de libérer mes surfaces.
Essaye vraiment de cerner le problème dans un projet vide de test, car libérer les surfaces, c'est quand même pas mal important x) Surtout que selon comment tu t'y prend tu risque d'avoir un bon gros débordement de mémoire (a moins d'utiliser toujours la ou les même surfaces pendant tout le jeu).
|
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 11:53 | |
| Ou plus simplement, mon code est-il correct ? Je ne mets qu'une partie du code. Toutes les variables sont initialisées dans instance_create. Ce code est dans un end_step : - Code:
-
{ if surface_refresh[1]=true { switch(ecran) { case"banque_de_donnees"://surface_free(surface[1]); surface[1]=surface_create(89,29*(selection_max[1]+1)); surface_set_target(surface[1]); // draw_set_font(global.font_hud); draw_set_halign(fa_center); draw_set_valign(fa_middle); // draw_text_color_scr(21+66/2,-2+1+23/2,"??????",60,c_selection[1,0],selection_alpha[1]); draw_text_color_scr(21+66/2,-2+1+23/2+29,"??????",60,c_selection[1,1],selection_alpha[1]); draw_text_color_scr(21+66/2,-2+1+23/2+29*2,"Créatures",60,c_selection[1,2],selection_alpha[1]); draw_text_color_scr(21+66/2,-2+1+23/2+29*3,"Recherches",60,c_selection[1,3],selection_alpha[1]); draw_text_color_scr(21+66/2,-2+1+23/2+29*4,"??????",60,c_selection[1,4],selection_alpha[1]); // for(i=0;i<=selection_max[1];i+=1) { draw_sprite_ext(menu_selection_spr,0,21,29*i,1,1,false,c_selection[1,i],selection_alpha[1]); draw_sprite_ext(menu_selection_artefact_spr,i,0,29*i+3,1,1,false,c_selection[1,i],selection_alpha[1]); } // draw_set_halign(false); draw_set_valign(false); // surface_reset_target();break; ...
Je viens de tester sur mon ancien PC le code sans surface_free(...), le jeu s'arrête car il dit qu'il essaye d'afficher une surface non existante ... je ne comprends plus rien ! |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 12:06 | |
| Oui y a bien un problème dans ton code, car tu crée une surface a chaque step : surface[1]=surface_create(89,29*(selection_max[1]+1)); T'auras donc un débordement de mémoire si tu la supprime pas.
Je pense qu'il y a des bugs car parfois tu essaye de supprimer une surface non existante ? A essayer : if(surface_exists(surface[1])) surface_free(surface[1]) |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 12:27 | |
| Non, la surface n'est créée que lorsque surface_refresh[1]=true. Quand mon code est fini, je mets un surface_refresh[1]=false. Donc je ne pense pas qu'il n'y ait de problème à ce niveau.
EDIT : if(surface_exists(surface[1])) surface_free(surface[1]) semble marcher comme s'il n'y avait pas le surface_free, je vais voir si ça marche sur mon ancien PC. |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 15:58 | |
| Le problème est réglé en ajoutant draw_clear_alpha(c_black,0) après le surface_set_target(...). |
|
| |
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 16:32 | |
| Eh ben.. des fois les solutions sont tellement connes qu'on y pense même pas xD Fin perso le draw clear quand je manipule des surface c'est une habitude :b |
|
| |
linkdu83 Petit bavard
Messages : 56 Localisation : Var Projet Actuel : Metroid Prime 2D
| Sujet: Re: Problème d'affichage de surfaces Mar 22 Mai 2012 - 16:38 | |
| En même temps, je ne connaissais pas cette fonction ... Dorénavant, je vais l'utiliser dès que je me servirai d'une surface, au moins, pas de problèmes ! EDIT : Je n'ai vraiment pas été bon sur ce coup là, en effet j'avais eu le même problème il y a moins de 2 ans : https://cbna.forumactif.com/t10258-probleme-de-surfaces#294430Et gabin49 avait trouvé cette solution ... (donc il y aura bien un problème sur les vieux ordinateurs cf. topic) |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème d'affichage de surfaces | |
| |
|
| |
| Problème d'affichage de surfaces | |
|