Purecross
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Purecross
Bonjour à tous,
J'ai un nouveau petit projet en préparation.
Je bute (déjà) sur un problème d'effets 2D.
Vous savez peut-être déjà que j'ai une config toute pourrie (Athlon 600Mh - Nvidia Geforce 256).
Je veux afficher des sprites transparents avec la fonction DisplayTranslucendsprite().
Conformément à la doc, je charge mon sprite avec le flag #PB_Sprite_Memory.
Ca marche mais c'est atrocement lent !!
J'ai lu dans l'aide que placer cette fonction dans un bloc "StartSpecialFX() - StopSpecialFX()" est sensé accélérer énormément l'affichage ...
Dans mon cas 3 problèmes :
1 - c'est encore plus lent voire ça plante l'application ! (pas de messages au niveau du débuger).
2 - les autres sprites appelés ailleurs avec simplement DisplaySprite() ne s'affichent plus du tout.
3 - les gadgets de la fenêtre ne s'affichent plus non plus.
Avez-vous déjà manipulé SpecialFX ?
Merci de votre aide.
J'ai un nouveau petit projet en préparation.
Je bute (déjà) sur un problème d'effets 2D.
Vous savez peut-être déjà que j'ai une config toute pourrie (Athlon 600Mh - Nvidia Geforce 256).
Je veux afficher des sprites transparents avec la fonction DisplayTranslucendsprite().
Conformément à la doc, je charge mon sprite avec le flag #PB_Sprite_Memory.
Ca marche mais c'est atrocement lent !!
J'ai lu dans l'aide que placer cette fonction dans un bloc "StartSpecialFX() - StopSpecialFX()" est sensé accélérer énormément l'affichage ...
Dans mon cas 3 problèmes :
1 - c'est encore plus lent voire ça plante l'application ! (pas de messages au niveau du débuger).
2 - les autres sprites appelés ailleurs avec simplement DisplaySprite() ne s'affichent plus du tout.
3 - les gadgets de la fenêtre ne s'affichent plus non plus.
Avez-vous déjà manipulé SpecialFX ?
Merci de votre aide.
Dernière modification par hackotedelaplaque le ven. 07/sept./2007 22:32, modifié 1 fois.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Re: StartSpecialFX() - Problème !
je pense meme que c'est indispensable pour que ça marche, a confirmer !!hackotedelaplaque a écrit : J'ai lu dans l'aide que placer cette fonction dans un bloc "StartSpecialFX() - StopSpecialFX()" est sensé accélérer énormément l'affichage ...
oui ! aucun problèmes chez moiAvez-vous déjà manipulé SpecialFX ?
Merci de votre aide.

-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re: StartSpecialFX() - Problème !
...
Dernière modification par beauregard le mer. 05/sept./2007 16:26, modifié 1 fois.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
Re: StartSpecialFX() - Problème !
oui, testé cet été, et la conclusion c'est d'utiliser les sprite3D pour la transparence. Mais il est biensûr possible de ce passer des sprite3D, mais dans ce cas il faut limiter ses ambitions.hackotedelaplaque a écrit : Avez-vous déjà manipulé SpecialFX ?
Merci de votre aide.
le lien avec un code où tu trouveras peut être ton bonheur:
http://www.purebasic.fr/french/viewtopic.php?t=6837
Puis dobro a savamment modifié mon code afin de démontrer la puissance des sprites3D.
Une petite carte3D avec 64Mo comme la mienne coûte environs 25 euros...
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Le source est ici
http://hackotedelaplaque.free.fr/Purecross.zip
J'ai enlevé le bloc StartSpecialFX()/StopSpecialFX() dans lequel je plaçais mon displaytranslucendsprite() vu que chez moi ça ramait et qu'à cause de ça mon sprite de fond (un classique displaysprite) et les gadgets ne s'affichaient plus.
J'ai testé ton source et celui de Dobro. Incontestablement les sprites 3D valent le détour. Je vais passer aux sprite3D.
Reste que je n'arrive toujours pas à comprendre pourquoi mon code ne marche pas ? Et je lache pas l'affaire tant que je saurais pas.
Autre question vu que vous avez le source :
je libère la souris quand le curseur quitte l'écran (sur la droite uniquement à l'heure actuelle) pour manipuler les gadgets. Mais comment la réacquérir sur l'écran courant ?
Merci à vous.
http://hackotedelaplaque.free.fr/Purecross.zip
J'ai enlevé le bloc StartSpecialFX()/StopSpecialFX() dans lequel je plaçais mon displaytranslucendsprite() vu que chez moi ça ramait et qu'à cause de ça mon sprite de fond (un classique displaysprite) et les gadgets ne s'affichaient plus.
J'ai testé ton source et celui de Dobro. Incontestablement les sprites 3D valent le détour. Je vais passer aux sprite3D.
Reste que je n'arrive toujours pas à comprendre pourquoi mon code ne marche pas ? Et je lache pas l'affaire tant que je saurais pas.
Autre question vu que vous avez le source :
je libère la souris quand le curseur quitte l'écran (sur la droite uniquement à l'heure actuelle) pour manipuler les gadgets. Mais comment la réacquérir sur l'écran courant ?
Merci à vous.
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
no problemo
l'image de la jeune femme en costume traditionnel s'affiche sans problème sur mon vieux PC, et je peux redimensioner les grilles...hackotedelaplaque a écrit :J'ai enlevé le bloc StartSpecialFX()/StopSpecialFX() dans lequel je plaçais mon displaytranslucendsprite() vu que chez moi ça ramait et qu'à cause de ça mon sprite de fond (un classique displaysprite) et les gadgets ne s'affichaient plus.
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
à mon avis, ça choquera personne, mais je ne peux pas t'aider car par manque de temps, j'ai étudié purebasic uniquement en mode graphique( plein écran)...hackotedelaplaque a écrit :je libère la souris quand le curseur quitte l'écran (sur la droite uniquement à l'heure actuelle) pour manipuler les gadgets. Mais comment la réacquérir sur l'écran courant ?
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
Tu as rajouté le bloc SpecialFX et ça marche ?l'image de la jeune femme en costume traditionnel s'affiche sans problème sur mon vieux PC, et je peux redimensioner les grilles...
Donc le code est bon et on peut définitvement dire que c'est un problème de matériel chez moi ?
Mon problème de souris est très embettant car sans lui je fais rien !!
En fait il s'agit d'un remake de Picross. Un jeu japonais (hanjie) genre sudoku mais où il faut dessiner. Sans souris, aucun intérêt. Mais si je libère pas la souris avec releasemouse(1) alors je peux pas "sortir de l'écran" pour toucher les gadgets ou menus. Et après mon release, si je reviens sur l'écran j'ai perdu l'acquisition de la souris...

Je me doute qu'il faut utiliser ReleaseMouse(0) mais comment ? c'est bien le problème...
[EDIT] je me rends compte que c'est pas clair mon histoire de souris. Enlevez l'instruction Releasemouse(0) et bougez la souris vous allez tout de suite comprendre...
Merci de ton aide en tout cas.

10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
dans le brouillard
Je n'ai rien rajouté du tout.hackotedelaplaque a écrit : Tu as rajouté le bloc SpecialFX et ça marche ?
Et d'ailleurs je ne vois ni StartSpecialFX() et encore moins DisplayTransparentSprite...
...maintenant si ce bloc existe( j'imagine des lignes de codes désactivés), et bien peux tu préciser dans quel code tu l'a placé (y a 3 codes) ?
-
- Messages : 121
- Inscription : mer. 21/janv./2004 22:18
non ça ne figure pas justement, si je le met plus rien ne marche !Et d'ailleurs je ne vois ni StartSpecialFX()
Le source principal c'est purecross.pb.
Ce n'est pas DisplayTransparentSprite() mais DisplayTranslucendSprite().
Lignes 167, 173, et 177.
Normalement pour un usage plus rapide, ces instructions doivent être comprises entre un StartSpecialFX() et un StopSpecialFX().
10 CLS
20 PRINT "Vive PureBasic"
30 GOTO 20
20 PRINT "Vive PureBasic"
30 GOTO 20
Le "displaysprite" se met normalement après le stopspecialfx, mais ici comme tu t'en sers pour effacer le fond, tu peux le mettre après le startspecialfx. Essaye plutôt d'utiliser des sprites 3d pour les objets translucides, avec une couche alpha ou avec un blending 5,7;
d'autant plus que tes blocs sont carrés!
Si tu tiens vraiment à faire une appli fenêtrée, soit tu utilises les gadgets de windows, soit tu fais en sorte que toute ta fenêtre soit en screen, tu seras moins ennuyé ; ou alors utilise les windowmousex() windowmousey(). Et pouquoi pas une deuxième fenêtre pour les gadgets...
Il y a dans codearchiv et sur les forums des exemples et des fonctions pour palier aux faiblesses de isscreenactive(). Place des debug pour voir le résultat des fonctions, observe leur comportement quand tu bouges la souris, tu finiras bien par trouver le truc!
d'autant plus que tes blocs sont carrés!
Si tu tiens vraiment à faire une appli fenêtrée, soit tu utilises les gadgets de windows, soit tu fais en sorte que toute ta fenêtre soit en screen, tu seras moins ennuyé ; ou alors utilise les windowmousex() windowmousey(). Et pouquoi pas une deuxième fenêtre pour les gadgets...
Il y a dans codearchiv et sur les forums des exemples et des fonctions pour palier aux faiblesses de isscreenactive(). Place des debug pour voir le résultat des fonctions, observe leur comportement quand tu bouges la souris, tu finiras bien par trouver le truc!
petit HS pour DJES 
vu ton avatar,

il se trouve qu'il y a quelques jours j'ai osé faire ça !
http://www.dailymotion.com/Dobro8/video ... hapo_music
bien a toi .. 

vu ton avatar,

il se trouve qu'il y a quelques jours j'ai osé faire ça !

http://www.dailymotion.com/Dobro8/video ... hapo_music



Je verrai ça dimanche, là je ne peux pasDobro a écrit :petit HS pour DJES
vu ton avatar,
il se trouve qu'il y a quelques jours j'ai osé faire ça !
http://www.dailymotion.com/Dobro8/video ... hapo_music
![]()
bien a toi ..
