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

  FORUM HardWare.fr
  Programmation
  C++

  Contourner limitation des taille de textures en OpenGL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Contourner limitation des taille de textures en OpenGL

n°591589
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 10:04:44  profilanswer
 

Bon c'est pas nouveau, les textures OpenGL doivent se plier à des restriction en taille : leur largeur/hauteur doivent en effet etre des puissances de 2.
 
C'est cool tout ca ... mais quand on a une texture de taille quelconque et qu'on veut la passer à OpenGL ... on fait comment ? Actuellement je recopi eligne par ligne avec un memcpy ... c'ets lent et moche :-/
 
Y a t il une astuce qui m'echappe ??

mood
Publicité
Posté le 16-12-2003 à 10:04:44  profilanswer
 

n°591596
LeGreg
Posté le 16-12-2003 à 10:15:00  profilanswer
 

Les tailles en puissances de deux sont la pour une raison:
la performance du texturage.
 
Ca ne sert à rien de chercher à les contourner il suffit que tu éduques celui qui te crées des textures pour utiliser des puissances de deux.
 
LeGreg

n°591616
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 10:43:53  profilanswer
 

bah c'est pas gagné ... j'acquiert des frames video depuis une camera IEEE qui elle veut rien entendre , son format c'est 320*240 ....

n°591646
LeGreg
Posté le 16-12-2003 à 11:30:25  profilanswer
 

320x240 deux solutions:
- ca rentre dans une texture 512x256 (facile si c'est du temps réel)
- ca se redimensionne aussi (filtrage linéaire, point le plus proche, bicubique etc..)
 
Pour ce qui est des cartes Nvidia elles supportent les textures de dimensions quelconques via l'extension RECT mais avec de serieuses limitations sur ce qu'on peut faire avec.
 
LeGreg

n°591664
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 11:54:16  profilanswer
 

D'accord.  
 
pour faire rente l'image dans la texture ... à part de brutal memcy de ligne, onpeut faire comment ??

n°591668
chrisbk
-
Posté le 16-12-2003 à 11:56:19  profilanswer
 

Joel F a écrit :

D'accord.  
 
pour faire rente l'image dans la texture ... à part de brutal memcy de ligne, onpeut faire comment ??


 
de brutaix memcpy ? [:joce]
A part la mise a jour de bourin je vois pas ? En dx je passera par une tex dynamique, je sais pas c quoi le pendant en ogl

n°591673
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 11:58:27  profilanswer
 

ben j'ai essayer en faisant du memcpy du tableau d'unsigned char* que renvoie la camera vers un autre unsigned char* de 512*256 ensuite je genere la texture et l'affiche.
 
verdict : ca va bien mais ou bout d'un moment ca rame ...
 
j'ai testé avec des entees 'disques' (ficheirs raw 320*240 sur disque) et ca rame aussi ... ca ne vient donc pas de la camera.

n°591678
chrisbk
-
Posté le 16-12-2003 à 12:00:22  profilanswer
 

Joel F a écrit :

ben j'ai essayer en faisant du memcpy du tableau d'unsigned char* que renvoie la camera vers un autre unsigned char* de 512*256 ensuite je genere la texture et l'affiche.
 
verdict : ca va bien mais ou bout d'un moment ca rame ...
 
j'ai testé avec des entees 'disques' (ficheirs raw 320*240 sur disque) et ca rame aussi ... ca ne vient donc pas de la camera.


 
c'est le bout la qui me fait peur. si ca se trouve tu sature completement ta ram video. tu la genere comment ?
la methode en directX : crée une tex en VRAM, une autre en memoire systeme, et copier la deuxieme dans la premiere. em ogl je sais pas, y'a pas des glCopyRect ou des trucs du genre ?


Message édité par chrisbk le 16-12-2003 à 12:00:35
n°591687
nraynaud
lol
Posté le 16-12-2003 à 12:06:53  profilanswer
 

Joel F a écrit :

bah c'est pas gagné ... j'acquiert des frames video depuis une camera IEEE qui elle veut rien entendre , son format c'est 320*240 ....

tu les mappes sur quoi comme objet ?


---------------
trainoo.com, c'est fini
n°591753
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 13:27:46  profilanswer
 

chrisbk a écrit :


 
c'est le bout la qui me fait peur. si ca se trouve tu sature completement ta ram video. tu la genere comment ?
la methode en directX : crée une tex en VRAM, une autre en memoire systeme, et copier la deuxieme dans la premiere. em ogl je sais pas, y'a pas des glCopyRect ou des trucs du genre ?


 
j'ai un tableau statique d'unsigned char qui me sert de tempon.
je recupere le spixels d emon image, je fait mes traitement et j'ecrit le resultat dans ce tampon.
 
Ensuite j'appelle glGenTexture et compagnie pour recreer la texture correcte.
 
Ensuite je mappe la txture sur un Quad pour l'affichage.

mood
Publicité
Posté le 16-12-2003 à 13:27:46  profilanswer
 

n°591755
chrisbk
-
Posté le 16-12-2003 à 13:29:21  profilanswer
 

Joel F a écrit :


Ensuite j'appelle glGenTexture et compagnie pour recreer la texture correcte.


 
ah mon avis, cherche pas plus loin, il est la le drame
tu demolis ta ram video, une texture par frame c'est un carnage

n°591757
nraynaud
lol
Posté le 16-12-2003 à 13:33:40  profilanswer
 

c'est quoi un quad ?
si le but est juste d'afficher en 2D ton truc, tu as les opérations glCopyRect() au niveau pixel.
Elles sont très rapides, je saturais le lien avec la caméra alors que je faisais segmentation+suivi des cibles+affichage instrumenté en temps réel.


---------------
trainoo.com, c'est fini
n°591758
chrisbk
-
Posté le 16-12-2003 à 13:35:08  profilanswer
 

nraynaud a écrit :

c'est quoi un quad ?


quadrilatere

n°591783
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 14:05:48  profilanswer
 

en fait, je dois gerer deux viewport dans ma vue : un ou j'affiche ce que je recois de ma camera (textur eplaqué sur un QUAD) dans le deuxieme, je dessine EN 3D le maillage correspondant à ma vue camera.
 
Je doit donc gérer deux types de vues differentes .... et j'en chie des ronds de chapeau.

n°591790
skelter
Posté le 16-12-2003 à 14:11:32  profilanswer
 

si tu veut afficher une texture qui fait 256*157 tu fait par exemple pour le coin superieur droit
glTexCoord2f(1,157/256); enfin c'est une truc comme ca

n°591793
skelter
Posté le 16-12-2003 à 14:14:15  profilanswer
 

j'oubliais, il faut bien sur que tu charge au depart une image avec une puissance de 2 comme largeur et hauteur, mais rien ne t'empeche de mettre plusieurs textures dans ton images pour ne pas perdre de la place

n°591795
nraynaud
lol
Posté le 16-12-2003 à 14:17:38  profilanswer
 

Joel F a écrit :

en fait, je dois gerer deux viewport dans ma vue : un ou j'affiche ce que je recois de ma camera (textur eplaqué sur un QUAD) dans le deuxieme, je dessine EN 3D le maillage correspondant à ma vue camera.
 
Je doit donc gérer deux types de vues differentes .... et j'en chie des ronds de chapeau.

dans ton viewport 2D, il faut faire des opérations de pixels, il ne faut surtout pas faire de 3D.


---------------
trainoo.com, c'est fini
n°591851
pascal_
Posté le 16-12-2003 à 15:14:03  profilanswer
 

Tu peux pas redimensionner tes images aux chargements, tout simplement ?
 

n°592024
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 17:20:17  profilanswer
 

non les operations que j'y  fait sont sensibles aux données et le redimensionnement serai la derniere chose à faire.
 

n°592082
Taz
bisounours-codeur
Posté le 16-12-2003 à 19:26:51  profilanswer
 

les bidules que tu utiles ils fonctionnent comment ? parce que sinon t'aurais pu planquer un mécanisme de cartographie derrière quelques opérateurs ...

n°592102
Joel F
Real men use unique_ptr
Posté le 16-12-2003 à 19:54:15  profilanswer
 

je vais essayer de faire claire :
 
Je recupere deux flux videos de mes cameras que je nomme ici GAUCHE et DROITE.
 
Sur chacune de ces images j'applique una lgo de rectification (ie bilinear filter et homographie), un filtre de Harris (filtre,fitlre,fitlre et en sortie liste de points). A partie de cette liste de points, je reconstruit les coordonnées 3D d'elements de references de ma video.
 
J'aimerais afficher mes deux flux videos et PAR DESSUS afficher la reconstruction 3D que je viens de calculer.

n°592112
red factio​n
Posté le 16-12-2003 à 20:09:22  profilanswer
 

si ca peut taider tu va dans le source code de quake 2, ya une fonction toute faite qui redimensionne les textures, jlai deja utilise dans un de mes viewer , marche impec  
 
dailleurs si tu met un texture quelquonque dans un niveau (quake 2 ou 3 ) ca passe nikel -> la fct magique id software

mood
Publicité
Posté le   profilanswer
 


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

  Contourner limitation des taille de textures en OpenGL

 

Sujets relatifs
[OpenGL / GLUT] Appliquer une texture à une sphèreTaille maxi des noms de vues (et tables ?) sous Oracle 9i (et < ?)
[PHPBB] Comment faire diminuer la taille de la BDD ?comment réduire la taille d'un datafile RBS ?
Taille d'image arrière plan[MFC] Taille fenetre, GetClient & GetRect [RESOLU]
[OpenGL] Utilisation des NURBSopengl
défi de la semaine : fonction retournant la taille d'un tableau[C] Taille d'un tableau d'int ?
Plus de sujets relatifs à : Contourner limitation des taille de textures en OpenGL


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