Utiliser OpenGl avec C #?

Existe-t-il des bibliothèques de support OpenGL gratuites pour C #? Si oui, lequel utiliser et où puis-je trouver des exemples de projets?

C # fournit-il des classes pour OpenGL?

OpenTK est une amélioration par rapport à l’API Tao, car il utilise le 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); 

par opposition à Tao qui ne fait que refléter 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 fonts, le chargement des textures, la gestion des entrées, l’audio, les maths …

Mise à jour du 18 janvier 2016 : aujourd’hui, le responsable d’OpenTK s’est retiré du projet , laissant son avenir incertain. Les forums sont remplis de spam. Le responsable recommande de passer à MonoGame ou SDL2 #.

Je pense que ce que @korona voulait dire, c’est que c’est juste une API C, vous pouvez la consumr directement de C # avec beaucoup de saisie comme ceci:

 [DllImport("opengl32")] public static extern void glVertex3f(float x, float y, float z); 

Vous devriez malheureusement 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 bon cadre.

De leur site:

Le Framework Tao pour .NET est un ensemble de liaisons facilitant le développement d’applications multimédias entre plates-formes utilisant les plates-formes .NET et Mono.

SharpGL est un projet qui vous permet d’utiliser OpenGL dans vos applications Windows Forms ou WPF.

Je recommanderais également le cadre Tao . Mais une note supplémentaire:

Jetez un oeil à ces tutoriels: http://www.taumuon.co.uk/jabuka/

Vous pouvez OpenGL sans wrapper et l’utiliser nativement en C #. Comme l’a dit Jeff Mc, vous devez importer toutes les fonctions dont vous avez besoin avec DllImport.

Ce qu’il a laissé de côté, 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 intuitives à faire.

J’ai créé un exemple de projet C # dans VS2012 avec presque le ssortingct minimum nécessaire pour faire fonctionner OpenGL sous Windows. Il ne peint que la fenêtre en bleu, mais cela devrait suffire pour vous permettre de démarrer. L’exemple peut être trouvé à http://www.glinos-labs.org/?q=programming-opengl-csharp . Recherchez l’exemple No Wrapper en bas.

Que voudriez-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.

En ce qui concerne le choix XNA vs OpenGL (un peu hors sujet que je connais mais depuis qu’il a été évoqué plus tôt), il peut être avantageux dans plusieurs cas d’utiliser OpenGL au lieu de XNA (et dans d’autres XNA au lieu d’OpenGL …).

Si vous allez exécuter les applications sur Linux ou Mac en utilisant Mono, cela pourrait être un bon choix pour utiliser OpenGL. De plus, ce qui n’est pas très connu, si vous avez des clients qui vont exécuter vos applications dans un environnement Cisortingx, DirectX / Direct3D / XNA ne sera pas un choix aussi économique qu’OpenGL. La raison en est que les applications OpenGL peuvent être hébergées sur un nombre moindre de serveurs (en raison de problèmes de performances, un serveur unique ne peut pas héberger un nombre infini d’instances d’application) que les applications DirectX / XNA nécessitant des serveurs virtuels dédiés. mode accéléré. D’autres exigences existent, telles que les cartes graphiques sockets en charge, etc., mais je garderai le problème de XNA vs OpenGL. En tant qu’architecte informatique, développeur de logiciels, cela devra être pris en compte avant de choisir entre OpenGL et DirectX / XNA …

Une remarque est que WebGL est basé sur OpenGL ES3 afaik …

En outre, ces considérations ne sont pas les seules à prendre en compte, mais elles pourraient faciliter le choix pour certains …

XNA 2.0 nécessite au minimum une carte shader 1.1. Alors que l’ancienne technologie, tout le monde n’en a pas. Certains ordinateurs portables récents (selon 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 sums passés à Tao et OpenGL. De plus, avec Tao, nous avons des liaisons pour le support audio et Lua.