Page 1 sur 1
"Glisser" une bank en mem video
Publié : lun. 14/févr./2005 18:05
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...
Publié : lun. 14/févr./2005 18:41
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().
Publié : lun. 14/févr./2005 19:15
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 ?
Publié : mar. 15/févr./2005 12:06
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.
Publié : mar. 15/févr./2005 13:32
par kelly
C'est super, ca marche.
Maintenant, pour un copymemory, comment j'obtiens l'adresse de mon tableau "Dim" afin de le copier ??
Publié : mar. 15/févr./2005 14:37
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?
Publié : mar. 15/févr./2005 17:55
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 ?
Publié : mar. 15/févr./2005 20:07
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))
Publié : mer. 16/févr./2005 10:23
par hardy
@a()
Oui, c'est vrai, Zénobie c'est 200 et des poussières, puisque contemporaine d'Aurélien.