Afficher une séquence avec OpenGL

ChachaChacha Membre
22:33 modifié dans API AppKit #1
Salut,

Désolé, ce n'est pas une vraie question de Cocoa, mais d'OpenGL (et encore). Sur Mac, je sais faire, le problème c'est que je ne sais pas comme attaquer mon problème sur d'autres systèmes.
Voici :
J'aimerais plonger l'affichage d'un film (sur un plan) dans un monde 3D (un peu comme ce qu'on voit dans les démos de Core Animation, ou de LookingGlass, tiens). Avec QuartzComposer, oh là , c'est pas dur. On charge son film, on l'affiche, on peut faire des rotations dans tous les sens. Par derrière, je sais qu'OpenGL tourne à  plein régime, c'est formidable.
Mais... maintenant je voudrais le faire sous Windows, avec .NET. Et là  je me pose la question : comment ça marche en vrai ? Je me doute bien que si je crée une texture pour chaque frame, et que je les balance une par une à  la carte, ça risque de ne pas être très efficace. Alors y a-t-il un autre principe général que je pourrais appliquer ? Ou dois-je forcément me tourner vers les APIs du système hôte ?

+
Chacha

Réponses

  • WIMPWIMP Membre
    22:33 modifié #2
    Je ne suis pas certain d'avoir bien compris ta question, car je ne connais pas les exemples que tu cites. J'avais fait il y a qq temps l'exercice openGL d'un cube qui tourne avec sur chaque face une image plaquée, traitée comme une texture.
    Si c'est ce qui t'intéresse, je devrais pouvoir retrouver ça 
  • AliGatorAliGator Membre, Modérateur
    22:33 modifié #3
    Je suis pas spécialiste mais j'ai bien peur que tu sois obligé de mapper une texture par frame.
    Donc tu décodes ta vidéo frame par frame, et tu utilises la frame comme nouvelle texture pour ton objet 3D...
  • ChachaChacha Membre
    22:33 modifié #4
    dans 1182780930:

    Je suis pas spécialiste mais j'ai bien peur que tu sois obligé de mapper une texture par frame.
    Donc tu décodes ta vidéo frame par frame, et tu utilises la frame comme nouvelle texture pour ton objet 3D...


    Ben ouais... ça marche, mais ça rame un chtit peu. En fait, j'ai essayé d'utiliser les FBO (frame buffer), mais de toutes façons, à  un moment où un autre, vu que je ne contrôle pas où s'affiche la vidéo, il faut que je recopie les frames.
    J'ai un peu mieux compris où interviennent les APIs de l'OS dans ce problème : il "suffirait" que l'API "lecture de film" puisse être configurée pour effectuer ses rendus dans une texture OpenGL, ou au pire un buffer spécifique, que je serais libre de lier ensuite à  un frame buffer.

    +
    Chacha
  • AliGatorAliGator Membre, Modérateur
    22:33 modifié #5
    Peut-être alors en modifiant directement la texture (déjà  créée) ?

    J'ai trouvé ce tuto sur NeHe j'ai pas lu en totalité (rassures-toi même si le tuto se base sur le code de Windows, tu as les sources pour XCode dispos aussi) mais le résumé disait que ça permettait de modifier une texture déjà  chargée... ?
  • AliGatorAliGator Membre, Modérateur
    22:33 modifié #6
    Ah pardon sur le site y'a mieux : Lesson 35 : Playing AVI Files In OpenGL

    Bon là  c'est du très orienté Windows, mais en général ce qui est intéressant c'est de parcourir le code en diagonale et surtout lire les commentaires qu'ils mettent dans les bulles tout au long du code. Pour comprendre les petites subtilités.
    Apparament là  toute la magie du truc se fait grace à  [tt]glTexSubImage2D[/tt] qui met à  jour la texture d'après les données que tu lui passes, ce qui sera à  priori bien plus rapide que de recréer une texture (pas de réallocation, pré-retaillée en puissance de 2, et tout).
  • ChachaChacha Membre
    22:33 modifié #7
    dans 1182788324:

    Ah pardon sur le site y'a mieux : Lesson 35 : Playing AVI Files In OpenGL


    Super, Ali, merci.
    J'ai effectivement essayé un truc avec TexImage, et dans ce cas ça roule. Chez Nehe, je vais donc trouver comment "rendre" une séquence dans un buffer donné, ce que je sais faire en Cocoa, mais pas sous Windows...

    En fait dans mon cas les FrameBuffer n'étaient pas super intéressants... je crois.

    Demain, j'essaye sous Windows :-) Argh ! ça me fait mal de revenir à  cet environnement de dev.

    +
    Chacha
Connectez-vous ou Inscrivez-vous pour répondre.