|
Sujet : programmation graphique locker une surface |
| youdontcare |
parce que la mémoire ne t'appartient pas : la texture est stockée sur la carte graphique. dans le cas d'un lock pour lire les données, il faut faire transiter la texture de la mem graphique vers la mem centrale. dans le cas d'un lock pour écrire c'est l'inverse.
ça sert donc à dire à directx "arrête le rendu jusqu'à ce que j'aie fini d'utiliser cette texture". imagine, tu veux écrire dans une texture qui est utilisée par un objet en train d'être rendu ... ou tu veux lire le backbuffer alors qu'un rendu est en train de se passer ... comme tout ça c'est asynchrone, il faut un moyen de dire qui fait quoi quand.
et donc, faut faire gaffe dans le lock ... ne pas locker une texture pour écrire dedans alors qu'elle est en train d'être utilisée par des objets (donc locker au début de la frame) ... en cas de lock pour lecture, spécifier le bon flag : si c'est une texture compressée, l'unlock() la recompressera ... etc. [edtdd]--Message édité par youdontcare--[/edtdd] |