Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3896 connectés 

  FORUM HardWare.fr
  Programmation
  Divers

  [OpenGL] recuperer l'adresse d'une texture

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[OpenGL] recuperer l'adresse d'une texture

n°596313
SBAM
Best recording of rach 3.
Posté le 23-12-2003 à 22:19:56  profilanswer
 

Voila ma question :
 
Quand je charge une texture avec glTexImage2D ou gluBuildMipmap2d, la seule trace qu'il me reste de ce qu'est devenue ma texture est le gluint correspondant. Je crois avoir compris qu'il ne represente qu'un index. En gros, je voudrais pouvoir recuperer un pointer vers l'emplacement de ma texture telle qu'elle est reellement utilisee par opengl.  
 
Je pense aussi avoir compris qu'il faut utiliser la fonction glPrioritizeTextures pour pouvoir placer la texture dans la ram afin de pouvoir y acceder.
 
J'ai trouve tres peu de doc sur l'organisation des textures en memoire une fois chargees donc sauriez vous m'en conseiller ?
 
Avez vous une idee pour recuperer le pointer vers la veritable texture ?
 
 
Merci par avance  :jap:

mood
Publicité
Posté le 23-12-2003 à 22:19:56  profilanswer
 

n°596331
chrisbk
-
Posté le 23-12-2003 à 23:20:01  profilanswer
 

heuh.  
Pour quoi faire ?

n°596336
SBAM
Best recording of rach 3.
Posté le 23-12-2003 à 23:36:12  profilanswer
 

Pour la manipuler comme je l'entend sans passer par glSubTexImage2D. En gros pour appliquer directement des filtres dans le gout de ceux de photoshop.

n°596337
chrisbk
-
Posté le 23-12-2003 à 23:37:46  profilanswer
 

je t'arrete tout de suite, c'est une trrrreeeeessss mauvaise idée
mais grave mauvaise :D
 
travaille sur une copie locale et renvoie cette copie a ta texture, mais directement attaquer la texture, non, c'est mal :o

n°596339
youdontcar​e
Posté le 23-12-2003 à 23:43:58  profilanswer
 

SBAM a écrit :

VJ'ai trouve tres peu de doc sur l'organisation des textures en memoire une fois chargees donc sauriez vous m'en conseiller ?

C'est parce que tu n'es pas censé savoir. La carte peut convertir en un format interne, compresser, etc.
 
Donc méthode chrisbk.

n°596343
SBAM
Best recording of rach 3.
Posté le 24-12-2003 à 00:24:15  profilanswer
 

chrisbk a écrit :

je t'arrete tout de suite, c'est une trrrreeeeessss mauvaise idée
mais grave mauvaise :D
 
travaille sur une copie locale et renvoie cette copie a ta texture, mais directement attaquer la texture, non, c'est mal :o


 
Mais pourquoi c'est mal ? Moi je trouve ca mal les copies locales  :o  
 
Sinon pour le format propre a la cg comme disait youdontcare, je ne le savais pas  [:ktulu] Donc y a vraiment vraiment pas moyen ?...
 
 
edit : et pour "Avez vous une idee pour recuperer le pointer vers la veritable texture ?" Vous voyez une methode ?
 
Merci encore pour vos reponses  :jap:


Message édité par SBAM le 24-12-2003 à 00:29:19
n°596348
chrisbk
-
Posté le 24-12-2003 à 00:53:09  profilanswer
 

SBAM a écrit :


 
Mais pourquoi c'est mal ? Moi je trouve ca mal les copies locales  :o  


 
parce que lire a partir de qqchose se trouvant en mem video, c'est tres mal. En fait, tu peux difficilement faire pire. La copie locale est infinement preferable
 
 

SBAM a écrit :


edit : et pour "Avez vous une idee pour recuperer le pointer vers la veritable texture ?" Vous voyez une methode ?


 
laisse la en paix, cette texture :o :D
 

n°596721
LeGreg
Posté le 25-12-2003 à 10:14:05  profilanswer
 

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

n°602925
SBAM
Best recording of rach 3.
Posté le 05-01-2004 à 16:46:21  profilanswer
 

Merci beaucoup  :jap:  
 
Sinon comme je l'ai deja dis plus haut, je voulais effectuer des travaux simples comme ceux de photoshop sur ces textures mais c'est bon, je fonctionne sur des copies locales  :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Divers

  [OpenGL] recuperer l'adresse d'une texture

 

Sujets relatifs
récupérer une liste de connexions réseau ?[ASP] Récupérer le contenu du buffer
Contourner limitation des taille de textures en OpenGLImpossible de recuperer la valeur de mon cookie.
[OpenGL / GLUT] Appliquer une texture à une sphère[Borland]Comment envoyer et récupérer une AnsiString (SendBuf inside)?
Comment récupérer le type de connexion d'un visiteur ?[Borland] Récupérer une chaine de char contenue dans une listbox
Récupérer le chemin à partir d'un nom de fichier (avec Visual C++) 
Plus de sujets relatifs à : [OpenGL] recuperer l'adresse d'une texture


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR