cs_mana
Messages postés22Date d'inscriptionmardi 8 avril 2003StatutMembreDernière intervention12 avril 2012
-
3 déc. 2009 à 18:36
cs_patatalo
Messages postés1466Date d'inscriptionvendredi 2 janvier 2004StatutModérateurDernière intervention14 février 2014
-
15 déc. 2009 à 09:17
bonjour,
je travail avec des image dont l'adresse est un pointeur directx(dans la ram du pc , pas cette de la carte vidéo), mais l'accès a la mémoire est très lente.
il y a t-il une possibilité d'accélérer la lecture et l'écriture de cette zone mémoire .
sur mon pc la copie du zone mémoire (800*600*32) vers une autre zone mémoire met 2 ms contre 200ms d'une zone 'directx' vers une mémoire que j'ai réservé
merci.
cs_mana
Messages postés22Date d'inscriptionmardi 8 avril 2003StatutMembreDernière intervention12 avril 2012 9 déc. 2009 à 19:21
bonjour,
je ne sais pas si la mémoire est réservée ou allouée, je récupère juste
l'adresse du buffer.
(ps : c'est quoi la différence entre réservée ou allouée)
la valeur des pointeurs sont :
00B0xxxx
056xxxxx
c'est surtout la lecture de ses zones mémoires qui sont très lente
(l'asm ni change rien)
voici ce que j'utilise comme programme (ne pas se fié à la syntaxe)
cette fonction est tres lente(plus de 200ms pour une image de 800x600)
void copy_image_ram(){
int img=new[long,haut]
memcpy(img,bufdx,(long*haut))
}
(2 ms pour cette fonction)
void gris(img){
mov esi,long*hhaut
mov ebx,img
boucle
mov eax,[ebx]
//rgb=(r+g+b)/3
mov [ebx],eax
add ebx,4
sub esi,1
jne boucle
}
(10 ms pour celle-ci)
void copy_image_buf(){
mov eax,bufdx
mov ebx,img
mov esi,long*hhaut
boucle
mov [ebx],[eax]
add eax,4
add ebx,4
sub esi,1
jne boucle
}