Réponses:
OpenTK est une amélioration par rapport à l'API Tao, car il utilise un style C # idiomatique avec surcharge, énumérations fortement typées, exceptions et types .NET standard:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
contrairement à Tao qui reflète simplement l'API C:
Gl.glBegin(Gl.GL_POINTS); // double "gl" prefix
Gl.glColor3ub(255, 255, 0); // have to pass RGB values as separate args
Gl.glVertex3f(0, 1, 0); // explicit "f" qualifier
Cela rend le portage plus difficile mais est incroyablement agréable à utiliser.
En prime, il fournit le rendu des polices, le chargement des textures, la gestion des entrées, l'audio, les mathématiques ...
Mise à jour du 18 janvier 2016 : Aujourd'hui, le mainteneur d'OpenTK s'est éloigné du projet , laissant son avenir incertain. Les forums sont remplis de spam. Le responsable recommande de passer à MonoGame ou SDL2 #.
Mise à jour du 30 juin 2020 : OpenTK a de nouveaux mainteneurs depuis un certain temps maintenant et dispose d'une communauté discord active. La recommandation précédente d'utiliser une autre bibliothèque n'est donc pas nécessairement vraie.
Je pense que ce que @korona voulait dire, c'est que ce n'est qu'une API C, vous pouvez le consommer directement à partir de C # avec beaucoup de frappe comme ceci:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Vous auriez malheureusement besoin de le faire pour chaque fonction OpenGL que vous appelez, et c'est essentiellement ce que Tao a fait pour vous.
Tao est censé être un joli cadre.
Depuis leur site:
Le Tao Framework pour .NET est un ensemble de liaisons destinées à faciliter le développement d'applications multimédias multiplateformes à l'aide des plates-formes .NET et Mono.
SharpGL est un projet qui vous permet d'utiliser OpenGL dans vos applications Windows Forms ou WPF.
Vous pouvez OpenGL sans wrapper et l'utiliser de manière native en C #. Comme l'a dit Jeff Mc, vous devrez importer toutes les fonctions dont vous avez besoin avec DllImport.
Ce qu'il a oublié, c'est d'avoir à créer un contexte avant de pouvoir utiliser l'une des fonctions OpenGL. Ce n'est pas difficile, mais il y a peu d'autres DllImports pas si intuitifs à faire.
J'ai créé un exemple de projet C # dans VS2012 avec presque le strict minimum nécessaire pour faire fonctionner OpenGL sous Windows. Cela ne peint que la fenêtre en bleu, mais cela devrait suffire à vous aider à démarrer. L'exemple peut être trouvé à http://www.glinos-labs.org/?q=programming-opengl-csharp . Recherchez l' exemple No Wrapper en bas.
Je recommanderais également le Tao Framework . Mais une note supplémentaire:
Jetez un œil à ces tutoriels: http://www.taumuon.co.uk/jabuka/
Que souhaitez-vous que ces bibliothèques de support fassent? Utiliser simplement OpenGL à partir de C # est assez simple et ne nécessite aucune bibliothèque supplémentaire afaik.
Concernant le (quelque peu hors sujet que je connais mais comme il a été évoqué plus tôt) XNA vs OpenGL, il pourrait être avantageux dans plusieurs cas d'utiliser OpenGL au lieu de XNA (et dans d'autres XNA au lieu d'OpenGL ...).
Si vous envisagez d'exécuter les applications sous Linux ou Mac en utilisant Mono, cela peut être un bon choix d'utiliser OpenGL. De plus, ce qui n'est pas si largement connu, je pense, si vous avez des clients qui vont exécuter vos applications dans un environnement Citrix, alors DirectX / Direct3D / XNA ne sera pas un choix aussi économique qu'OpenGL. La raison en est que les applications OpenGL peuvent être co-hébergées sur un moins grand nombre de serveurs (en raison de problèmes de performances, un seul serveur ne peut pas héberger un nombre infini d'instances d'application) que les applications DirectX / XNA qui nécessitent des serveurs virtuels dédiés pour s'exécuter dans le matériel mode accéléré. D'autres exigences existent, comme les cartes graphiques prises en charge, etc., mais je vais m'en tenir au problème XNA vs OpenGL. En tant qu'architecte informatique, développeur de logiciels, etc., cela devra être pris en compte avant de choisir entre OpenGL et DirectX / XNA ...
Une note latérale est que WebGL est basé sur OpenGL ES3 afaik ...
En outre, ce ne sont pas les seules considérations, mais elles pourraient faciliter le choix de certains ...
XNA 2.0 nécessite au minimum une carte shader 1.1. Bien que vieille technologie, tout le monde n'en a pas. Certains ordinateurs portables plus récents (d'après notre expérience, les tablettes Toshiba avec graphiques Intel) ne prennent pas en charge le shader 1.1. XNA ne fonctionnera tout simplement pas sur ces machines.
C'est un problème important pour nous et nous sommes passés à Tao et OpenGL. De plus, avec Tao, nous avons des liaisons pour le support audio et Lua.