IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

DirectX Discussion :

Device non utilisé ?


Sujet :

DirectX

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 19
    Points
    19
    Par défaut Device non utilisé ?
    Bonjour, je commence avec la programmation DirectX en C# et je bloque sur un point.

    Je créé un device auquel je passe en paramétres ma pictureBox afin d'y afficher une vidéo. Mais la video se lance dans une fenêtre créée par DirectX et non dans ma pictureBox :s

    Voici le code :

    Pour la création du device, où pBoxVideo est un Control de type PictureBox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     private void InitializeGraphics(Control ctrl)
            {
                PresentParameters pParams = new PresentParameters();
                pParams.Windowed = true;
                pParams.SwapEffect = SwapEffect.Discard;
     
                deviceVideo = new Device(0, DeviceType.Hardware, pboxVideo, CreateFlags.HardwareVertexProcessing, pParams);
            }
    L'appel lorsque je lance ma video :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    oVideo = new Video(sVideoFileName);
    oVideo.Play();
    Donc je ne sais pas si j'oublie quelquechose a l'initialisation ou autre mais j'ai lu des tuto etc, c'est censé marcher comme ca :s

    Merci.

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Bonjour.

    Ta PictureBox possède un handle (HWND ou PictureBox->handle). Directshow a besoin de ce handle pour associer les frames vidéos à ta PictureBox, sinon par défaut, le filtre de rendu va créer une fenêtre pour montrer les images.

    Quand je lis ce tutorial, il est bien précisé que la vidéo apparaît dans une nouvelle fenêtre (et c'est normal, confère ci-dessus):

    http://morpheus.developpez.com/directxdotnet/#LIIC

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Hum oui, j'y avais pensé et je l'ai testé, mais même en passant le Handle, directshow me créé une nouvelle fenêtre :s

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    deviceVideo = new Device(0, DeviceType.Hardware, pboxVideo, CreateFlags.HardwareVertexProcessing, pParams);

  4. #4
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Re.

    Le device n'a rien a voir avec directshow.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    oVideo = new Video(sVideoFileName);
    oVideo.Play();
    C'est plutôt ici qu'il faudrait préciser le handle:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    oVideo = new Video(sVideoFileName, PictureBox->handle);
    oVideo.Play();
    Malheureusement ce n'est pas fait pour. Soit utiliser les API directshow en .net et voir la dll "QuartzTypeLib.dll".

    Soit écrire un wrapper directshow. Chose que je suis en train de faire et qui sera bientôt dispo dans les tutoriaux directX. Malheureusement le wrappage .net/COM m'a fait revoir ma copie, et ça prends un peu de temps pour faire fonctionner le tout correctement... Sinon le wrappage C++/COM, C#/COM, VB/COM est opérationnel.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Merci de la réponse, je vais regarder de ce coté alors. Et j'attends ton tuto avec impatience

    Cordialement,

    LoST_MiND.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    En fait j'ai trouvé la solution tout simplement. Il suffit de passer le control dans lequel on veut afficher notre vidéo via Video.Owner

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compatibilité et argument non utilisé
    Par progfou dans le forum C++
    Réponses: 4
    Dernier message: 04/01/2008, 13h20
  2. MSSQL 2000-2005 tables ou vues non utilisé
    Par mikaeru dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 14/11/2007, 08h46
  3. [OSF] setuid non utilisé
    Par ejl07 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 19/10/2007, 10h20
  4. Swap non utilisé
    Par Finidrigoler dans le forum Administration système
    Réponses: 7
    Dernier message: 10/07/2007, 21h07
  5. fermer un Access non utilisé
    Par GAGNON dans le forum Access
    Réponses: 2
    Dernier message: 17/10/2005, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo