Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1618 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  par rapport a directX, c quoi "COM" ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

par rapport a directX, c quoi "COM" ?

n°341028
airseb
Posté le 24-03-2003 à 08:58:32  profilanswer
 

tout est dans la question.

mood
Publicité
Posté le 24-03-2003 à 08:58:32  profilanswer
 

n°341031
lorill
Posté le 24-03-2003 à 09:00:30  profilanswer
 

ca n'a rien a voir  [:sinclaire]

n°341038
airseb
Posté le 24-03-2003 à 09:05:02  profilanswer
 

lorill a écrit :

ca n'a rien a voir  [:sinclaire]  


 
g un bouquin sur directX 7 qui en parle, donc je ne pense pas que ça n'ai rien a voir  :o
 
et de toute façon : c quoi COM ?


Message édité par airseb le 24-03-2003 à 09:05:56
n°341046
lorill
Posté le 24-03-2003 à 09:08:18  profilanswer
 

ben si, ca n'a rien a voir  [:sinclaire]  
y'en a un c'est une api graphique, et l'autre c'est un systeme de composants, en (tres) gros

n°341065
drasche
Posté le 24-03-2003 à 09:27:49  profilanswer
 

si, depuis DirectX7, ça a à voir vu qu'on peut utiliser DirectX en Visual Basic.  Mais si tu programmes en Visual C++, cela ne te concernera effectivement pas.  Voici ce que dit MSDN:
 

Citation :


COM (Component Object Model)
 
Purpose
 
COM is a platform-independent, distributed, object-oriented system for creating binary software components that can interact. COM is the foundation technology for Microsoft's OLE (compound documents) and ActiveX® (Internet-enabled components) technologies, as well as others.  
 
Where Applicable
 
COM objects can be created with a variety of programming languages. Object-oriented languages, such as C++, provide programming mechanisms that simplify the implementation of COM objects. These objects can be within a single process, in other processes, even on remote machines.
 
Developer Audience
 
COM is designed primarily for C++ and Microsoft Visual Basic® developers.  
 
Run-time Requirements
 
Runs on a wide variety of operating systems


Au niveau runtime, il faut comprendre: Windows (32 bits)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°341269
LeGreg
Posté le 24-03-2003 à 12:30:39  profilanswer
 

COM c'est comme ça que sont censées communiquer les applications sur plateforme windows.
 
En gros dès que tu fais quelque chose d'un peu complexe sous windows impliquant plusieurs applications tu utilises COM (meme si c'est caché).
 
C'est un modèle de composants logiciel et c'est sensé être indépendant du langage (c'est utilisable en C pur). Par exemple, les composants COM ne supportent aucune fancy features du C++, comme l'heritage virtuel, la surcharge des operateurs et des methodes, le name mangling, les namespaces etc..
 
Tu as un composant qui est décrit par une interface.  
Cette interface est tirée d'une table par type de composant et des relations d'héritage.  
Comment tu accèdes aux méthodes? par une table virtuelle et l'emplacement (dispatch) de chaque méthode dans cette table virtuelle. Pour pouvoir accèder aux méthodes d'un objet COM de base, il faut soit se lier statiquement à cette table virtuelle, soit utiliser des objets automation qui permettent d'utiliser des composants pour lesquels tu n'as aucune information à la compilation (interface IDispatch).  
Les méthodes ont évidemment des conventions d'appels stricts (cdecl avec this passé sur la pile).
 
C'est un peu complexe et il est difficile de tout connaître.
Ce qu'il faut savoir c'est que DirectX est constitué à 100% par des composants COM et les 10% restant par des librairies "classiques" (lièes statiquement ou de manière dynamique).
 
Tu ne crées pas un objet Dx par un appel à CoCreateInstance mais tu passes par un point d'entrée statique qui crée cet objet pour toi (par exemple Direct3DCreate9). Ce passage vérifie que tu as compilé avec la bonne version du SDK, avant de te passer un pointeur vers une interface valide.  
La raison pour cela n'est pas entièrement sûre mais je crois que les ingénieurs de DirectX ont simplement voulu simplifier la création d'objets tout en empechant la creation d'objets à distance et autres trucs possibles en COM. C'est sensé être une API de haute performance qui ne sera utilisé que de manière très locale par une application et ça évite d'avoir à passer par le runtime de COM et d'avoir à appeler CoInitialize dans chaque thread. De plus avec CoCreateInstance tu sépares la création de l'initialisation ce qui n'est pas vraiment utile pour DirectX.
 
Chaque objet DirectX implemente juste l'interface de base de COM c'est à dire IUnknown en plus de la leur. Seul AddRef et Release sont utilisés par le programmeur. Les composants DirectX ne sont pas des objets automation (qui implementent IDispatch).  
 
En gros COM/DCOM/Automation est beaucoup plus vaste que ce que DirectX laisse entrevoir et le fait que les objets DirectX soient des composants COM relève désormais de l'anecdote (pour AddRef et Release) et peut-être un peu moins pour Visual Basic.
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°341288
TBone
Pouet.
Posté le 24-03-2003 à 12:37:24  profilanswer
 

bien intéressant tout ça. j'en ai appris un max moi  
:hello:
 
par contre:

legreg a écrit :


C'est un peu complexe et il est difficile de tout connaître.
Ce qu'il faut savoir c'est que DirectX est constitué à 100% par des composants COM et les 10% restant par des librairies "classiques" (lièes statiquement ou de manière dynamique).


;)
 
LeGreg> tu codes des jeux vidéo ?


Message édité par TBone le 24-03-2003 à 12:39:56

---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
n°341398
drasche
Posté le 24-03-2003 à 13:37:52  profilanswer
 

airseb> pour être complet, disons que COM est une interface supplémentaire, qui facilitera surtout la vie des programmeurs VB, alors que les autres (C, C++, Delphi, ...) préféreront les API habituelles.  Car au fond je me demande: l'interface COM de DirectX n'est-elle pas juste un wrapper?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°341737
airseb
Posté le 24-03-2003 à 18:41:17  profilanswer
 

drasche a écrit :

airseb> pour être complet, disons que COM est une interface supplémentaire, qui facilitera surtout la vie des programmeurs VB, alors que les autres (C, C++, Delphi, ...) préféreront les API habituelles.  Car au fond je me demande: l'interface COM de DirectX n'est-elle pas juste un wrapper?


 
désolé mais c quoi un wrapper ?

n°341774
drasche
Posté le 24-03-2003 à 19:10:42  profilanswer
 

airseb a écrit :


 
désolé mais c quoi un wrapper ?


une interface qui est traduite en une autre interface.  Par exemple, on peut programmer un wrapper Direct3D qui se placera au dessus de Glide de feu 3Dfx.


Message édité par drasche le 24-03-2003 à 19:11:05

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 24-03-2003 à 19:10:42  profilanswer
 

n°341826
LeGreg
Posté le 24-03-2003 à 19:37:47  profilanswer
 

TBone a écrit :


legreg a écrit :
C'est un peu complexe et il est difficile de tout connaître.  
Ce qu'il faut savoir c'est que DirectX est constitué à 100% par des composants COM et les 10% restant par des librairies "classiques" (lièes statiquement ou de manière dynamique).  
 
;)


 
Il y a trois sortes de mathématiciens: ceux
qui savent compter et les autres.
 
En fait : la partie non COM étant une surcouche, il y a donc bien 10% de bonus..  
 
LeGreg


---------------
voxel terrain render engine | animation mentor
n°341870
TBone
Pouet.
Posté le 24-03-2003 à 20:07:17  profilanswer
 

:D


---------------
As the plane took off, the pilot turned to the co-pilot and said, “Have you ever flown solo?” Co-pilot: No. Typically I fly much higher than this.
n°341893
drasche
Posté le 24-03-2003 à 20:24:21  profilanswer
 

legreg a écrit :


En fait : la partie non COM étant une surcouche, il y a donc bien 10% de bonus..  


:jap: en effet je n'avais pas lu l'entièreté de ton post, désolé pour cette question répétitive.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°355594
pifarkus
Posté le 08-04-2003 à 12:11:24  profilanswer
 

Vous auriez pas un tutorial en français sur DCOM en C++ (j'ai juste une FAQ)?


Message édité par pifarkus le 08-04-2003 à 12:14:09

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  par rapport a directX, c quoi "COM" ?

 

Sujets relatifs
[C++/DirectX] Direct3D et 3D reel...Comment ouvrir des MP3 et des midi XG en directx
[DirectX] Quel langage haut-niveau utilisé pour les shaders?Question DirectX :)
[C/C++][DirectX] DirectDraw obsolète ?Center une image par rapport à 2 lignes
Les avantages de jsp par rapport a phpdirectx
Directx 8 (gestion générale sur le principe des moteurs 3d)[word] modifier un champ par rapport à une liste déroulante
Plus de sujets relatifs à : par rapport a directX, c quoi "COM" ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR