"Glisser" une bank en mem video

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

"Glisser" une bank en mem video

Message par kelly »

Salut les keums,

Ouai, je sais que certains ont du talent, notament le SOLDAT (et autre) qui avait pondu un code pour afficher des points plus vite qu'avec la methode normal.
Bref, cela y ressemble mais je pose quand meme la question :
Je travaille avec un ecran de 1024*768 et un Dim P(1024*768). Chaque P(x) est un point de l'ecran que j'affiche ainsi :

Code : Tout sélectionner

For u=0 To 767
For i=0 To 1023
Plot (i,u,p(i+u*1024))
Next
Next
Alors, je me suis demandée si il n'y avait pas moyen de copier directement tout le bloc en memoire video ?
Merci pour la foule innombrable de reponses...
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

tout à fait possible, avec un copymemory, ou des pokeL.
Pour l'adresse de la mémoire vidéo, drawingbuffer().
Pour la taille des lignes, drawingbufferpitch().
le tout après un startdrawing()
Eventuellement, convertir le format avant. En général c'est du 32 bits 00BBGGRR.
voir avec DrawingBufferPixelFormat().
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

ok hardy.

Petite precision, mes points sont des "plot" de couleur $BBVVRR. A quoi correspond ton "$oo" ? A de l'alpha ? ou simplement a une valeur nulle de 256 octets a passer dans mon paquet pour faire un double mot ?

PS : ton avatar represente la reine zenobie ?
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

A des zéros pour en faire un double-mot je crois.
J'ai déjà tranféré des trucs en mémoire vidéo en mettant des zéros, et pas de problème.
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

C'est super, ca marche.
Maintenant, pour un copymemory, comment j'obtiens l'adresse de mon tableau "Dim" afin de le copier ??
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

@a().

Note : concernant mon avatar, il s'agit d'une fresque de Pompéi.
Je ne sais plus ce qu'elle représente. J'ai cherché dans deux livres sur le sujet, dont un des derniers Mazenod, et je ne la trouve pas.
Qu'est-ce qui te fait penser à Zénobie?
kelly
Messages : 176
Inscription : jeu. 09/sept./2004 16:15

Message par kelly »

hardy a écrit :Note : concernant mon avatar, il s'agit d'une fresque de Pompéi.
Ok donc, ce n'est pas zenobie car elle vecu presque 200 ans plus tard...

Bon, pour mon "Dim", comment trouver l'adresse pour pouvoir apres copier tout le bloc en mem video ?
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

Code : Tout sélectionner

Dim Tableau.l(1024, 768)


MemVideo = DrawingBuffer()

CopyMemory(@Tableau(), MemVideo, 1024* 768 * 4)
; * 4 car un long fait 4 octects (une couleur est codé sur 4 octects, le dernier étant toujours à 0, et un octect pour le rouge, un pour le vert et un pour le bleu, enfin, suffit de remplir le tableau avec des couleurs normals RGB(r, g, b))
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
hardy
Messages : 333
Inscription : mer. 02/juin/2004 13:19
Localisation : Tours

Message par hardy »

@a()
:D

Oui, c'est vrai, Zénobie c'est 200 et des poussières, puisque contemporaine d'Aurélien.
Répondre