Pourquoi tu n'as pas de pointeurs a la creation de ta texture sans verrouillage explicite?
tout simplement pour que ton driver puisse la deplacer comme il veut cette texture. C'est ce qu'on appelle de l'optimisation et elle prend deux formes. La premiere c'est de deplacer la texture dans une forme optimale (qui n'est pas celle du fichier, exemple lineaire->swizzled) et dans une memoire rapide pour le GPU (le plus souvent memoire video, donc un pointeur sur cette memoire n'a aucun sens pour le CPU). La deuxieme c'est ce qu'on appelle du renommage. Une texture utilisée peut etre modifiee mais cette modification affectera une copie implicite de cette texture. Cette copie implicite a ete cree a un emplacement memoire arbitraire lors du verrouillage et donc tu n'as pas acces a cette information lors de la creation. Et surtout tu ne peux pas affecter la version originale de la texture (si tant est qu'on puisse considerer qu'il y ait une forme originale).
Sous Dx par exemple meme si tu peux demander explicitement qu'il n'y ait pas de renommage mais cela n'empechera pas les deplacements implicites, surtout s'il doit faire la conversion swizzled->lineaire->swizzled a chaque cycle de verrouillage/deverrouillage.
Quand je dis qu'il n'y a pas forcement de pointeurs a la creation de la texture c'est donc vrai a plusieurs niveaux: a cause du renommage et du deplacement implicite, tu ne peux travailler que sur une copie a la fois (la plus recente, ces multiples copies sont datees). Ensuite quand la texture est utilisée par le GPU en memoire video, il n'existe tout simplement pas de pointeur explicite accessible depuis ton programme vers la memoire de cette texture. Contente toi donc ton identifiant entier et demande a ton API de rapatrier les donnees dans un format lisible par toi apres que ton rendu soit termine mais ne t'attends pas a une vitesse de traitement phenomenale.
PS: si tu nous disais quel genre de traitement tu veux faire, c'est peut-etre realisable a partir d'un simple pixel shader (ou fragment program).
LeGreg