-
glTexImage2D trop lent
Salut a tous.
Voila je developpe une application qui lit une video (j utilise opencv car j aimerai par la suite attrappé la sortie d une web cam et opencv est vraiment tip top pour ca...) et l affiche en 3D sur un rectangle avec opengl. Sur le rectangle je plaque une texture mise a jour chaque fois qu on attrappe une image avec
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB , pImage->width, pImage->height, 0, GL_BGR, GL_UNSIGNED_BYTE, cvPtr2D(pImage,0,0));
ou pImage est mon image format opencv (IplImage).
Le truc c est que c est vraiment tres lent. :? Je perd pas mal de fps avec cette méthode. Ne connaitriez vous pas une alternative?
Merci d avance...
Bye
-
Il y a peu de chance qu'il existe une methode differente. La WebCam (ou le film) te fournis une image qui est dans la memoire du CPU. Il faut bien transferer cette image dans la memoire du GPU. Tu n'as donc pas reellement d autre alternative que ce genre d appel assez couteux en temps.
Par ailleurs, note que tu n'es pas forcement oblige de faire ceci a chaque frame. Un rafraichissement de la texture tous les 10eme de secondes doit probablement largement suffire.
Idee : Tu peux meme tester a moins de frame, mais en utilisant deux textures, et en faisant une interpolation entre les deux dont le facteur varie en fonction du temps ...
-
sinon, si le facteur limitant est l'envoi des données sur le port graphique et que tu a un CPU suffisament puissant, tu peut tenter une compression DXTC sur le CPU pour envoyer moins de données.
-
Question : Quels ratio de compression peut on esperer obtenir avec la compression DXTC ???
-
je n'en sait absolument rien :mouarf:
mais il suffit de regarder la difference apres compression avec un outils qui le fait (je crois qu'il y a un truc comme ca chez NVidia)
-
Salut !
Préfère aussi glTexSubImage2D qui est plus rapide pour les mises à jour des données.
Bon coding !
@+
-
glTexSubImage n'apporte rien par rapport a glTexImage si tu raffrachit la texture entierement