...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

...

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:35, modifié 2 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Oui, en passant par les APIs je crois qu'il y en a une mais par PB je ne pense pas
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Je vais peut-être dire des conneries, mais, à mon avis:

Si tu as beaucoup de données de sprites à manipuler "à la main" (pléonasme?), il vaut mieux tout coller dans la mémoire principale, donc créer tes sprites avec "#pb_sprite_memory".
Pour chaque sprite, tu récupère l'adresse de ses données avec "startdrawing(spriteoutput()) : *addresse=drawingbuffer()".
Avec cette addresse, tu dois avoir accès au buffer du sprite directement par la suite, sans repasser par un startdrawing à chaque fois. Je te laisse concocter une fonction GetPixel à partir de là :twisted:
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:21, modifié 1 fois.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:22, modifié 1 fois.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Je voulais parler du pointeur vers les pixels du sprite, sans l'en-tête:

Code : Tout sélectionner

startdrawing(spriteoutput(#sprite))
*pointeurverslespixels=drawingbuffer()
stopdrawing()
Je n'en suis pas tout-à-fait sûr, mais je pense que peux réutiliser ensuite ce pointeur pour lire les pixels sans refaire un startdrawing sur le sprite.
Mais tu dois alors tout calculer toi-même, en tenant compte de la largeur, hauteur, profondeur de couleur...
apres un petit tour dans l'aide, je vois ke si je fais un loadsprite en mode memory il va dans la RAM
Ben oui, la RAM est plus rapide d'accès pour les calculs.
C'est pour ça que certaines commandes sprite sont à faire de préférence dans un bloc startspecialfx() - stopspecialfx()
startspecialfx(): crée un buffer pour l'écran dans la RAM
stopspecialfx(): copie le buffer-écran de la RAM dans le buffer-écran de la VRAM
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:22, modifié 1 fois.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Les commandes de la famille specialfx sont justement des manipulations de données sans accélération matérielle, si j'ai bien compris: c'est pourquoi il me semble que c'est du même domaine que ce que tu veux faire.

Pour ce qui est des en-tête de sprite, va voir dans PureBasic\Library SDK\PureBasic library descriptor.txt... Mais ya du boulot!
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:22, modifié 1 fois.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

En fait, ça m'intéresserai de me coller à une petite lib asm pour faciliter l'accès à ces fameux en-(prise de)-tête...
Qu'est-ce qu'il faudrait comme fonctions ?

retrouver les coordonnées du clippage

retrouver la couleur d'un pixel (en la traduisant ou non en code RGB standart? )

...d'autres trucs utiles?

Qui a des idées?
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Bah voilà déjà un truc tout con à tester:
http://pageperso.aol.fr/Filperj/spriteptr.zip
ça permet au moins d'accéder à l'en-tête (sauf bug, faut encore tester)
Et pas besoin de C :evil:
(je dis ça parsque je connait rien au C :? )
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Et puis loadsprite/createsprite renvoie un pointeur non vers l'en-tête du sprite, mais vers une DirectDrawSurface, et on retrouve ce pointeur dans l'en-tête du sprite.
Mais c'est quoi exactement une DirectDrawSurface ? Je suppose que ça a encore son propre en-tête... Quelqu'un sait comment on doit gérer cette bête-là ?
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:23, modifié 1 fois.
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Oui c'est certainement un bon début.
Peut-être que je vais chercher midi à 14h avec ma lib :)

Mais toi qui fait du C, tu ne connais pas la structure d'un DirectDrawSurface ? Ca a rapport à DirectX...
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

...
Dernière modification par Dr. Dri le lun. 10/oct./2005 8:24, modifié 1 fois.
Répondre