60 votes

Quoi utiliser? Tao, SharpGL, OpenTK, P / Invoke DirectX, XNA, MDX, SlimDX, Pack de codecs API Windows

Retour dans la journée, il était facile; Vous avez fait votre propre 3D, puis est venu DirectX, puis est venu OpenGL. Pour .Net développeurs MDX a été agréable. Puis XNA a pris pour MDX, mais ce n'est pas le même. XNA semble être très jeu-centric avec tout le contenu du pipelining et le préchargement des modèles fixes et d'autres choses.

Alors, où en sommes-nous maintenant? Après quelques jours de recherche/essai et d'erreur, je me sens partout où je regarde je trouver de la moitié développé des bibliothèques, les bibliothèques généraux, de graves limitations ou les bibliothèques qui sont trop complexes.

Je veux faire "main-libre" 3D. Par exemple, l'affichage de 200k de points sur un écran en 3D et de les déplacer à 30fps (Kinect image de profondeur). Je veux faire de la 3D écran de veille, d'analyse audio plugins, etc. Tout ce qui n'est pas préfabriqués pour un contenu de pipeline, et qui nécessitent des performances élevées. Et (ehm) je veux le faire partir .Net.

Quelqu'un a une expérience avec les bibliothèques qui sont facile/compréhensible et donne toujours une juste quantité de liberté et de vitesse?

14voto

Tedd Hansen Points 4893

Il me semble avoir atterri sur OpenTK. Je trouve que ça donne plus ou moins l'accès direct à l'API OpenGL et ne nécessite pas de charges de dépendances.

Il est relativement facile à comprendre. Il nécessite peu (et compréhensible) des lignes de code pour obtenir commencé. Il ne retient pas les objets pour moi, donc je suis libre de changer quoi que ce soit, pour chaque passage, ce qui est excellent parce que je suis principalement à l'insécurité des pointeurs de la mémoire.

Il est bien sûr difficile de combiner la vitesse et la facilité d'utilisation. Vitesse nécessite de parler directement à l'interface API 3D tandis que la facilité d'utilisation requres l'abstraction. Par conséquent, ceci doit être considéré comme un niveau inférieur de l'API que certains autres que j'ai essayé. Si je voulais faire un peu de préfabrication d'animation de personnage, puis XNA serait probablement un meilleur choix, mais pour mon utilisation (décrit ci-dessus), cela semble très prometteur à ce jour (4 à 5 heures de piratage).

Un exemple de code:

private void Render()
{
   // Every frame
   GL.MatrixMode(MatrixMode.Modelview);
   GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
   GL.LoadMatrix(ref cameraMatrix);

   GL.Begin(BeginMode.Points);

   // Here I can add lots of points. I add 200k without any big problem.
   // It seems these points could have been passed in as an array pointer too,
   //  but I'll look at that later.
   GL.Vertex3(x2, y2, z2);

   GL.End();
   glControl.SwapBuffers();
}

8voto

MikeP Points 4823

Si vous avez aimé MDX, SlimDX devrait vous convenir parfaitement. Il s'agit fondamentalement d'un remplacement pour MDX, mais avec de nombreuses décisions de conception douteuses corrigées et beaucoup plus de fonctionnalités incluses. Tout ce que vous avez eu avec MDX, vous le trouverez dans SlimDX sous une forme ou une autre.

3voto

Taylan İnan Points 21

Il existe également un autre package d'encapsulation C # pour OpenGL: OpenGL DotNet. Fonctionne bien pour moi! Découvrez-le sur http://www.taylaninan.com/opengl-dotnet.php .

Il intègre OpenGL jusqu'à la version 4.4 et prend en charge plus de 550 extensions OpenGL. Il prend également en charge GLU, GLUT, FreeGLUT, DevIL (bibliothèque d’images de développeur), ILU et ILUT pour DevIL.

C'est une API de bas niveau pour les bibliothèques ci-dessus.

1voto

Pedery Points 2716

Nous sommes confrontés à un problème similaire il y a quelques temps et voici notre avis, bien sûr. L'une de nos principales préoccupations était que la bibliothèque devrait être polyvalent, de produire des images 3D de très bonne qualité, gratuite, et ne pas mettre des charges de contraintes supplémentaires sur le programme d'installation, c'est à dire comme avec XNA où vous devez avoir les bons fichiers installés. Cela semblait comme une possible source de maux de tête. En fin de compte nous nous sommes installés pour DirectX et écrit de l'interface graphique en C#. Tous ont besoin d'interaction avec la 3D a été fait avec wndproc. Cela nous a fourni la puissance de DirectX et de la facilité de développement du GUI avec C#. Nous n'avons pas regretté du tout.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X