Sont GDI GDI+ et OpenGL vraiment obsolète/obsolète?
Si vous ouvrez la page "Graphiques et des Jeux (Windows)" à la microsoft.com
la dernière catégorie est décrite comme
Héritage Graphiques: des Technologies qui sont obsolètes et ne doivent pas être utilisés dans de nouvelles
des applications.
Cette catégorie inclut (entre autres) les Api suivantes:
- GDI
- GDI+
- OpenGL
Quelle est votre opinion? Si je veux le lancement d'un nouveau logiciel aujourd'hui, il doit prendre en charge Windows XP (encore environ 50% de tous les systèmes installés). Direct2D nécessite Windows 7/Vista. Quoi d'autre devrait être utilisé?
Vous devez vous connecter pour publier un commentaire.
Je soupçonne que Microsoft définition de "l'héritage" a peu à voir avec ce raisonnable développeur doit faire, et il est plutôt basé sur une Réécriture de l'API Windows.
Départ vers Windows Vista, Microsoft a été la refonte de beaucoup de leurs API. Nous avons maintenant MMDevAPI comme le seul Vrai Son API, le COLLÈGE est le seul Vrai Fichier Image API, etc. De ce que j'ai vu/entendu, ces nouvelles API sont beaucoup mieux que les anciennes, et la "héritage" des systèmes de tous les travaux sur la base des nouvelles. Dans Windows Vista et les versions ultérieures, DirectSound est entièrement basé sur MMDevAPI, et les composants qui ont besoin de lire des fichiers d'image de le faire par l'intermédiaire de WIC.
Windows 8 aura un BRAS de version, il apparaît en charge uniquement un sous-ensemble de l'actuelle API de Windows. Nous ne saurons pas avec certitude jusqu'à ce que Windows sur ARM est libéré, mais, en se basant sur les bibliothèques incluses pour la plate-forme ARM dans Visual Studio 11 (ref: http://www.winehq.org/pipermail/wine-devel/2012-March/094559.html), il est à la recherche comme GDI+ et OpenGL ne sera pas disponible. GDI est disponible pour les liens, mais ça ne veut pas nécessairement dire qu'il est intact.
Cette nouvelle API à partir de Vista et plus tard correspondent à peu près les bibliothèques dans la VS11 BRAS de la cible. Je devine que quoi que ce soit sur cette liste est là parce que c'est soit la dernière et la meilleure façon de faire ce qu'il fait, ou il est techniquement trop important de la jeter (pour l'instant). Ainsi, "l'héritage" est tout ce qui n'est pas la dernière et la meilleure façon de le faire au moins une chose.
Je ne suis pas sûr de ce qui est le seul Vrai API Graphique. Nous avons déjà Direct2D, Direct3D, DirectComposition (qui, au passage, n'est pas disponible jusqu'à ce que Windows 8), DirectWrite, et DXGI. DXGI semble la plus proche, mais je n'ai pas assez profonde compréhension de l'API graphique est-à-dire. Je soupçonne gdi32 est techniquement très difficile de se débarrasser de. Comment sont non-legacy applications destiné à trouver lorsqu'une partie d'une fenêtre a été révélé, et, par conséquent, doit être peint, sans l'aide de WM_PAINT, ce qui implique une HDC, et comment pourrait-d'une bibliothèque de le faire sur une application du nom sans le remplacement de la procédure de fenêtre? Comment sommes-nous appelés à faire des semi-transparent windows sans utiliser UpdateLayeredWindow, qui prend un HDC? Combien user32 dépendent gdi32, et peuvent-ils être séparés?
À partir d'un point de vue technique, Windows peut facilement se débarrasser de GDI+ et OpenGL, mais je ne suis pas convaincu que se débarrasser de OpenGL fonctionnera, même sur une nouvelle plate-forme qui ne promets pas de compatibilité descendante. Il semble trop précieux pour les développeurs. GDI+ n'est pas très importante, mais il est très facile pour un tiers pour fournir un remplacement.
Je dirais utiliser les API que vous avez énumérés, et le pire qui pourrait arriver, c'est que vous avez à réécrire votre INTERFACE utilisateur si vous souhaitez porter votre application de métro ou de Windows sur ARM. GDI est un excellent choix si vos besoins sont simples et vous serez codage directement par l'API Windows. Il n'y a pas beaucoup de situations où je le recommande GDI+ sur OpenGL API de dessin. GDI+ est lente, limitée, et disponible uniquement sur Windows. Le GDI+ API est plus simple parce que c'est de la 2D, donc c'est peut-être utile si vous avez besoin de faire quelque chose de très simple, mais avec l'anti-aliasing.
OpenGL n'est pas obsolète, l'implémentation de Microsoft, il est. Mise en œuvre Microsoft est bloqué à la version 1.1, qui est vieux. La version actuelle de la norme est passé à la version 4. Si vous voulez utiliser OpenGL, il est entièrement pris en charge par NVidia, ATI, et Intel cartes graphiques sur le bureau de Windows, mais pas dans les
MétroWindows Moderne, l'INTERFACE utilisateur des applications, est une norme de l'industrie, et travaille également sur Mac et Linux. Si vous avez besoin d'un logiciel de secours de la mise en œuvre, Mesa a pensé à vous, et il fonctionne même sur le DOS. (Depuis Mesa peut rendre dans la mémoire tampon, il n'y a aucune raison qu'il ne fonctionne pas dans les applications d'INTERFACE utilisateur Moderne, mais vous ne voulez probablement pas à le faire, car il peut être lent.) Une chose à noter est que WGL, l'API d'accès à la fonctionnalité OpenGL sur le bureau de Windows, dépend GDI (qui est obsolète) de sorte que vous voudrez probablement utiliser quelque chose comme FreeGLUT ou SDL à la place si vous le souhaitez pour l'avenir de votre application, qui a aussi des filets de vous indépendance de plate-forme.OpenGL ES est une variante de l'OpenGL qui fonctionne sur Android et Apple iOS. Il est également accessible en JavaScript via WebGL, Internet Explorer 11 sera support (et à peu près tous les autres navigateur déjà fait.) ANGLE fournit une accélération matérielle pour la mise en œuvre de la GLES pour Windows qui se greffe hors de DirectX (version 9 ou 11), et devrait donc travailler en interface Modern UI apps. Une fois de plus, Mesa a la mise en œuvre de logiciels couverts.
TL;DR: OpenGL n'est pas seulement pas obsolète, il est cross-platform, standard, et a une ampleur considérable dans l'industrie. GDI et GDI+, eh bien, pas tellement.
Si vous voulez prendre en charge de Windows XP, alors vous êtes sur le soutien d'un "héritage" du système d'exploitation, et en tant que tel, à l'aide d'un "héritage" des graphismes cadre est le choix logique.
Même si n'étaient pas vrai, disons simplement que je suis en désaccord avec l'avis donné par le liés article MSDN. Les "anciens" ici l'état a plus à faire avec la technologie de l'équipe Windows pense est cool cette semaine. Le statut de "obsolète" signifie simplement que le groupe responsable n'accepte plus ou de remplir les rapports de bug (sauf pour des questions de sécurité critiques). Pas trop grand d'un accord—ces technologies ont été autour assez longtemps qu'ils sont assez complet et stable.
GDI ne va pas n'importe où, donc, si vous besoin de quelque chose de solide comme le roc qui est garanti pour être pris en charge n'importe où et partout, c'est ce que je voudrais aller avec.
Si vous avez besoin d'un peu plus de 2D de fonctionnalités que GDI offre (par exemple, la transparence de canal alpha), alors vous pouvez envisager d'utiliser GDI+. C'est presque un ordre de grandeur inférieure à celle du GDI, mais ce n'est pas trop grand d'un problème sur les machines modernes avec plus de puissance que vous pourriez jamais vouloir. Cela, aussi, va être pris en charge pour un temps très long à venir.
Cela dit, si j'avais écrit une nouvelle application aujourd'hui, j'ai probablement ne serait pas embêter avec OpenGL. Il y a très peu qu'il offre des avantages sur Direct2D et DirectWrite, qui sont à la fois ce que Microsoft pousse comme de remplacement pour/GDI GDI+. Il pourrait y avoir un avantage à l'utilisation d'OpenGL si vous avez absolument doit cible Windows XP car autant que je peux dire, Direct2D/DirectWrite sont pris en charge uniquement sur Vista et les versions ultérieures, mais c'est parce que (comme je l'ai mentionné au départ), Windows XP tombe carrément dans le "legacy" ou "obsolète" camp lui-même. Alternativement, si vous savez déjà OpenGL-vous bien et n'ont pas le temps ou le désir d'apprendre Direct2D/DirectWrite, alors il peut faire sens pour continuer à l'utiliser dans une nouvelle application.
Ne laissez pas le verbiage de l'article MSDN vous faire peur. Choisir la technologie la mieux adaptée à votre cas d'utilisation spécifiques compte tenu de toutes les informations disponibles. Par le temps un de ces technologies disparaissent complètement, vous aurez à ré-écrire complètement l'application pour une douzaine d'autres raisons.
Edit: Hmm, on dirait DirectWrite a également été déclarée (par certaines personnes au moins) "obsolète" ainsi, après avoir été remplacé par Direct2D. C'est drôle, il n'a même pas été autour assez longtemps pour moi de la peine de l'apprendre. Je suppose que ça ne va à l'appui de mes plus tôt argument que "obsolètes", désignant simplement qu'une technologie, c'est pas ce qui est actuellement considéré comme étant en vogue par Microsoft devs.
Personnellement, je suis en attente jusqu'à ce que tous les bugs ont travaillé sur ce genre de choses (et de nous décider sur une semi-norme permanente) avant de me faire passer pour un de mes applications. Tout ce que j'ai vu écrit en DirectDraw ou Direct2D a eu de graves rendu de bugs et est un spectacle de cauchemar, même raisonnablement compétente machines. Bien sûr, ils n'apparaissent parfois, dans de bonnes conditions, mais c'est trop pour moi. Et je vous jure, le flou texte s'affiche tout le temps. Ne pas être capable de lire ce qui est sur l'écran est une affaire de tueur pour moi et mes utilisateurs. GDI n'ont pas ce problème, et ça ne va pas n'importe où.
Ce n'est pas vrai pour l'OpenGL. OpenGL 4 vous permet d'utiliser des geometry shaders sur winxp. Ce qui n'est pas possible avec DirectX (DirectX 10 n'est pas pris en charge sur windows xp). Il est également l'un des seuls de la croix-plate-forme Api 3D là-bas.
À partir d'un point de vue commercial MS est intéressé dans la promotion de DirectX puisqu'elle en est la technologie de verrouillage Développeur de la plate-forme windows (ils sont aussi intéressés à faire de DirectX plus attrayant pour les développeurs, mais c'est une autre histoire). Il est donc logique qu'ils ne sont pas désireux sur la promotion de l'OpenGL.
Je vous conseille d'arrêter l'utilisation de la plateforme technologies lorsque cela est possible. Prenez de la croix-plate-forme de cadre et de l'utiliser pour votre application. Il y a Qt, GTK, wxWidgets et autres boîtes à outils pour les applications à interface graphique, et de la SDL(et variantes) pour les jeux. De cette façon, lorsque le développeur de plateforme décider de le rendre ridicule décision (comme le fait de ne pas soutenir DX10 sur WinXP) vous n'aimez pas, vous serez capable de se déplacer avec un minimum de coût de développement. Qt est aussi ridiculement puissant et pour le moment j'ai pas de raison d'utiliser autre chose pour le développement du GUI. Encore, la situation peut changer dans le futur.
En bref, alors que le développement de certaines plate-forme, vous devez garder à l'esprit que le développeur de plateforme pourraient avoir leurs objectifs qui ne sont pas compatibles avec vos souhaits. Découvrir que votre source est devenue enfermé dans une seule plate-forme n'est pas très agréable expérience. Vos propres objectifs devrait être la première priorité, et si os développeur essaie de vous faire usage de certaines technologies que vous n'aimez pas, alors vous ne devriez pas en charge cette technologie.
Parce que OpenGL est une norme, il doit être considéré comme tout aussi obsolète que C ou C++ donc c'est une question de temps avant que l'ensemble de l'API Windows -- ce qui est devenu aujourd'hui une compilation une fois exécuté sur chaque machine x86 API grâce à Wine -- est considéré comme déprécié en faveur de l' .NET et C#.
Je utiliser l'interface graphique pour graphique simple et OpenGL, quand j'en ai besoin pour l'accélération 3d.
Un autre aspect est que Microsoft build-dans la mise en œuvre d'OpenGL est certainement être considéré comme obsolète car il est juste la version 1.1 ou quelque chose, mais qui a été pendant une longue période.
Ouais, sur OpenGL, il surpasse DirectX dans beaucoup de façons, à la fois de ressources et d'affichage sage. Il ne sera jamais promu par Microsoft car il ne peut pas propres OpenGL, pour ne pas mentionner la plupart des gens ne le font pas de leur recherche et de Microsoft peut prétendre qu'il est vieux. La vérité est opengl est opensource standard et évolue à un rythme beaucoup plus rapide que fermé parce que c'est plus que de 1 salle de développeurs payés à travailler sur elle. Également, Microsoft a signé des contrats avec de nombreuses entreprises à libérer en utilisant uniquement des logiciels Microsoft, ce qui provoque plus d'affaires de Microsoft et de moins en moins à utiliser le plus avancé de la norme OpenGL. Il est intéressant de lock-up si vous voulez, Microsoft crée ces contrats ainsi que de nombreux programmes sont écrits en DirectX de Microsoft, et aucune entreprise ne pourra les refuser parce que Microsoft a environ 80%+ home de l'utilisateur de marché.