cree une texture en temp reel [opengl] - Programmation
Marsh Posté le 28-06-2001 à 19:57:51
on peut créer une texture en temps réél et le chargement peut se faire relativement vite, si le format d'image externe et le format interne sont identiques (oublie le S3TC en temps réel)
En revanche, lire sur la carte: JAMAIS, l'AGP ça marche très mal dans le sens retour.
Il esiste des extensions pour faire un rendu sur une texture.
Marsh Posté le 29-06-2001 à 10:19:09
qu'est-ce que tu entend par format interne et format externe, moi ce que je voudrai c'est pouvoir ecrire dans une zone memoire pour faire la texture et que celle ci soit utilisée dans l'image suivante
Marsh Posté le 29-06-2001 à 10:45:37
ben ca c'est possible. Sans probleme je pense tu peux faire ta texture dans une zone memoire (zone ou tu peux aussi mettre une image decompressée : format RGB ou RGBA par exemple). Tu peux le faire en temps réel et je pense pas qu'il devrait y avoir de ralentissement mais il nefaut pas non plus que la texture soit trop grosse.
Mais oui c'est possible, je l'ai deja fait pour faire par exemple un slideshow avec des images (comme acdsee) avec des effets 3d en plus. Au lieu de créer des centaines de textures j'en crée une que je modifie a chaque image pour afficxhier les images les unes apres les autres.
Marsh Posté le 29-06-2001 à 16:54:52
ben il te suffit d'attendre jusqu'a 20 heures ce soir et tu aura un exemple !!!
Marsh Posté le 29-06-2001 à 19:38:16
pour format interne et externe je voulais dire:
tu dis à OpenGL de charger tes données (dans le format externe), qui peut être RGB888 par ex, sur la carte (parfois, ce n'est pas chargé tout de suite sur la carte, par ex si t'as plus de textures que la mémoire de ta carte) dans un format interne genre RGB565.
Si le format externe et l'interne sont les mêmes, et que tu ne demande pas le calcul des mipmaps, pas de conversion à faire, et donc ça va vite. y'a que le transfert AGP ou PCI. Sinon, y'a des conversions et des calculs.
Si tu veux faire une vidéo, et pas générer les textures directement, tu peux demander à OpenGL de prédigérer tes données et t'exporter dans le format interne, mais là, pas touche aux données car elles ne sont pas forcément celles que tu crois, mais tu peux faire des vidéos. Sache que le port AGP demande dans pas mal d'implémentations l'utilisation du proc.
Marsh Posté le 29-06-2001 à 20:04:58
Y'a un moyen mais j'ai pas le redbook sous la main. Par contre c'est tout sauf rapide!
Marsh Posté le 29-06-2001 à 20:35:01
Tu ne peux pas toucher à la mémoire video de ta carte graphique (ca serait trop beaux).
Il te faut creer une texture opengl, et recopier ta nouvelle image dans cette texture à l'aide de:
glTexSubImage2D()
C'est pas ultra rapide (tu transfers l'image par le bus à chaque fois).
http://ask.ii.uib.no/ebt-bin/nph-d [...] /OpenGL_PG
Si c'est une animation de quelques images tu peux comme le dit darkoli, creer une texture longue, et tu affiche une des etapes de ton animation en jouant sur les coordonnées des textures,ou sur la matrice de transformation des textures.
Marsh Posté le 29-06-2001 à 20:35:48
la methode que j'utilse te permet de modifier une texture mais tu ne peux pas la mettre a jour directement en accedant à la memoire de la carte video. En fait tu crées une texture comme normalement sur celle que tu avais deja declaré avec OpenGL. Donc le source c'est celui de base pour charger une texture.
Marsh Posté le 28-06-2001 à 18:46:30
voila,
est-il possible de creer une texture, pendant l'execution du programme ou bien de modifier directement la surface d'une texture en accedant à son espace memoire (n'est-ce pas sur la carte viedo que l'on stock les texture??)