2009-02-13 4 views
3

Exigences:Cross plate-forme 2D Vector + Raster API + matériel accéléré - existe-t-il?

  • API mode graphique Bénéfices non
  • Pour des objets 2D seulement (bien que les transformations 3D de ces objets 2D est d'intérêt)
  • multiplateformes
  • dessin graphiques vectoriels
  • Raster compositing + support pour les masques d'opacité - matériel accéléré bien sûr ...
  • Animation API
  • Taille du paquet - peut-il fonctionner dans un environnement intégré?

Ce n'est pas pour un jeu, mais je ne suis pas opposé à l'utilisation d'une API de type de jeu.

Quelques réflexions:

Qt est probablement trop lourd poids, mais je ne suis pas assez familier avec l'API pour savoir si elle répondrait aux exigences. Je ne suis pas intéressé par la gestion des fenêtres Qts (il n'y a pas de fenêtres) ou par le widget/jeu de contrôle, car ce n'est pas le cas pour une application de type desktop. En outre, je ne suis pas sûr si Qt a un cadre d'animation? Pensées ici?

Probablement ce que ce serait un framework construit au-dessus d'OpenGL. Je ne sais pas si une telle chose existe. En outre, je ne suis pas clair sur les graphiques 2D dans OpenGL. Les graphismes 2D sont-ils vraiment 2D ou sont-ils simplement des objets 3D dessinés sur un plan orienté pour regarder 2D?

WPF est de DirectX comme _____________ est OpenGL

Si le blanc peut être rempli c'est ce que je cherche.

Mise à jour # 2

J'ai passé un peu de temps ce week-end avec Qt et ont découvert la classe QGraphicsScene - ce qui semble être la classe fondamentale pour le mode graphique de type conservé 2D de Qt - et QGraphicsWidget qui permet une configuration automatique fonctionnalité de la classe QWidget.

Qt est proche de passer mon test décisif. Une dernière chose à comprendre est un bon concepteur de flux de développement pour traiter des images vectorielles, à savoir, comment puis-je prendre une icône créée dans Illustrator et transformer cela en un QGraphicsItem - cela pourrait être un bon candidat pour un nouveau question.

Répondre

5

Vous voudrez peut-être vérifier Cairo, il a un backend OpenGL. Je ne pense pas qu'il y ait une API d'animation.

+0

Wow. Je suis impressionné par la clarté du rendu du Caire vu sur leur site web. Cependant, il semble que leur feuille de route ne correspond pas aux objectifs de mon projet. Je ne suis pas intéressé par la sortie ou l'impression PDF de qualité. La vitesse pure et pure avec des animations fluides est ce que je suis après. – helifreak

+0

Cairo peut également être utilisé pour le rendu animé. Regardez les vidéos sur cette page: http://www.cairographics.org/OpenGL/ – codelogic

1

Alors que OpenGL est un excellent outil pour le rendu 3D, il est important de comprendre qu'à la fin de la journée, le support de sortie est intrinsèquement 2D. Les perceptions de la 3ème dimension sont obtenues à travers des indices visuels tels que l'éclairage, l'objet lointain apparaissant plus petit que les objets proches, et les objets proches qui occluent les objets éloignés. Ces indices visuels sont implémentés en tant que calculs à diverses étapes du pipeline graphique.

L'éclairage et l'ombrage, les transformations de la fenêtre d'affichage et les requêtes de profondeur font partie des opérations utilisées pour créer l'illusion de la 3D. Lorsque vous utilisez OpenGL pour 2D, de nombreuses opérations de pipeline généralement utilisées pour le rendu 3D peuvent être ignorées.Cela peut entraîner des améliorations de performances en raison d'un calcul réduit et présente l'avantage supplémentaire de simplifier le code source. Il existe également un certain nombre d'opérations qui fonctionnent spécifiquement sur un raster 2d tel que les sprites de dessin. Au lieu de considérer le rendu 2D comme un ensemble réduit de rendu 3D, je vous encourage à considérer le rendu 3D comme le résultat d'éléments 2D soigneusement construits.

0

WPF est également 3D. La bibliothèque est réglée et conçue pour rendre la 2D facile, mais elle a aussi toutes les transformations 3D.

+0

Oui, j'aurais probablement dû être plus clair. Les transformations 3D d'objets 2D sont intéressantes (généralement appelées 2.5D), mais je ne m'intéresse pas aux objets 3D. Je serais heureux avec une matrice 4x4 qui pourrait être appliquée à n'importe quel objet 2D. – helifreak

2

En ce qui concerne l'utilisation de Qt.

Ce n'est pas un poids lourd dans un sens significatif. La bibliothèque dynamique est de quelques Mo et les opérations graphiques sont assez optimisées je crois.

Il ne dispose pas d'une version stable utilisant l'accélération OpenGL - cela vient dans Qt4.5.

Il n'utilise XRender ou quelque chose, pour 2D Accel

En outre, il dispose d'une API grand dessin, et une API d'animation (QTimeLine pour des choses simples et récemment QtAnimation plus puissant)

+0

Donc ce que je voulais dire être lourd pourrait être juste un problème de perception que j'ai avec Qt - et je suppose que je dois comprendre plus de sa nature modulaire, mais je ne m'intéresse pas aux fonctionnalités Qts windowing/X11 widgets/contrôles fournis avec Qt. – helifreak

+0

c'est une question de minimalisme inutile. Qt a un tas de choses, des widgets, des réseaux, xml, tout ce dont vous avez besoin. Si vous n'en avez pas besoin, ne l'utilisez pas, il n'y a pas de point d'usure. –