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

Visual C++ Discussion :

cast avec des objets COM


Sujet :

Visual C++

  1. #1
    Membre extr�mement actif

    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 408
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 408
    Par d�faut cast avec des objets COM
    Bonjour,
    Dans une application 3D (donc devant avoir le plus de fps possible) je dois faire des cast entre IUknown et IDirect3DResource9 (IDirect3DResource9 �tant un type d�riv� de IUknown), pour l'instant j'utilise QueryInterface mais bon �a coute pas mal de cycle.

    Qu'est ce que je devrai faire, garder mes QueryInterface, utiliser un c-cast, utiliser les cast c++, lequel?
    Bref je sais pas trop.

    Merci de m'aider.

  2. #2
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Je n'ai que des souvenirs lointain mais il me semble que tu ne peux pas faire un cast sauvage. QueryInterface est la solution pour obtenir un pointeur correcte sur l'interface � utiliser.

  3. #3
    Membre extr�mement actif

    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 408
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 408
    Par d�faut
    j'ai trouv� �a sur msdn : http://msdn.microsoft.com/de-de/library/78xw8kzk.aspx

    Note that you must obey Reference Counting rules at all times. If you call Release on an interface pointer to decrement the reference count to zero, you should not use that pointer again. Occasionally you may need to obtain a weak reference to an object (that is, you may wish to obtain a pointer to one of its interfaces without incrementing the reference count), but it is not acceptable to do this by calling QueryInterface followed by Release. The pointer obtained in such a manner is invalid and should not be used. This more readily becomes apparent when _ATL_DEBUG_INTERFACES is defined, so defining this macro is a useful way of finding reference counting bugs.
    et donc je sais pas trop comment le prendre et quoi faire

  4. #4
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Pourquoi ne pas r�cup�rer des "IDirect3DResource9" des API plut�t que des "IUknown" ?

  5. #5
    Membre extr�mement actif

    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    2 408
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 2 408
    Par d�faut
    je vais �crire compl�tement mon probl�me :

    dans mon application directx, je manipule des vertex buffers (IDirect3DVertexBuffer9), des index buffers (IDirect3DIndexBuffer9) et vertex declaration (IDirect3DVertexDeclaration9), et je souhaite les stocker dans un seul et unique conteneur stl (dans mon cas vector).

    donc pour les stocker et les r�cup�rer plus tard je cherche la meilleure m�thode, tant au niveau s�curit� qu'au niveau rapidit�.

    pour l'instant j'utilise QueryInterface, mais vu que stock/r�cup�re ces informations plusieurs fois par frame, �a coute pas mal de temps.

    mon probl�me est peut �tre un faux probl�me (un reinterpret_cast et on s'en tamponne de la s�curit�) mais je me pose quand m�me cette question.

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 504
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 504
    Par d�faut
    Si vous voulez de la s�curit�, ne m�langez pas dans une m�me structure des objets n'ayant pas tous une interface correspondant � l'utilisation des �l�ments de cette liste (ne pas m�langer les torchons et les serviettes).

    Si vous ne voulez plus de cette s�curit�, un simple reinterpret_cast avec une switch et un �l�ment de structure du vecteur stockant le type fera largement l'affaire. Essayez tout de m�me d'encapsuler ces optimisations dans une structure opaque pour les utilisateurs.

Discussions similaires

  1. R�ponses: 21
    Dernier message: 16/09/2013, 22h00
  2. [COM] PHP en communication avec l'objet COM
    Par joe_le_mort dans le forum Biblioth�ques et frameworks
    R�ponses: 4
    Dernier message: 22/05/2012, 14h57
  3. [COM] Probl�me avec l'objet COM
    Par Commodore dans le forum Biblioth�ques et frameworks
    R�ponses: 1
    Dernier message: 16/05/2006, 20h36
  4. [RPC] Appels distants : remplacer des objets COM
    Par pataguillon dans le forum C++
    R�ponses: 26
    Dernier message: 30/03/2006, 09h17
  5. R�ponses: 1
    Dernier message: 21/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