web-dev-qa-db-fra.com

Vous utilisez OpenGl avec C #?

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

C # fournit-il des classes pour OpenGL?

116
MegaByte

OpenTK est une amélioration par rapport à l'API Tao, car elle utilise un style idiomatique C # avec surcharge, types fortement typés, 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 polices, le chargement de la texture, la gestion des entrées, l'audio, les mathématiques ...

Mise à jour du 18.1.2016 : Aujourd'hui, le responsable de la maintenance d'OpenTK a s'est éloigné du projet , laissant son avenir incertain. Les forums sont remplis de spam. Le responsable recommande de passer à MonoGame ou à SDL2 #.

124
Iraimbilanja

Je pense que ce que @korona voulait dire, c’est qu’il s’agit simplement d’une API C, vous pouvez la consommer directement en C # avec un tas de dactylographie comme celle-ci:

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

Malheureusement, vous auriez besoin de faire cela pour chaque fonction OpenGL que vous appelez, et c'est fondamentalement ce que Tao a fait pour vous.

16
Jeff Mc

Tao est supposé être un cadre de Nice.

De leur site:

Tao Framework for .NET est un ensemble de liaisons destinées à faciliter le développement d’applications multimédias multiplates-formes à l’aide des plates-formes .NET et Mono.

15
Ólafur Waage

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

9
dharmatech

Vous pouvez OpenGL sans wrapper et l'utiliser nativement en C #. Comme Jeff Mc l'a dit, 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. Il ne fait que peindre la fenêtre en bleu, mais cela devrait suffire à vous aider à démarrer. L'exemple peut être trouvé à l'adresse http://www.glinos-labs.org/?q=programming-opengl-csharp . Recherchez l'exemple No Wrapper en bas.

7
Harry Glinos

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

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

7
Oliver

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.

4
korona

En ce qui concerne le choix XNA vs OpenGL (un peu hors sujet, je le sais mais puisqu'il a été évoqué plus tôt), 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 souhaitez exécuter les applications sous Linux ou Mac avec Mono, optez pour OpenGL. En outre, ce qui est moins 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 nombre inférieur de serveurs (en raison de problèmes de performances, un serveur unique ne peut pas héberger un nombre infini d'instances d'application) par rapport aux applications DirectX/XNA qui exigent des serveurs virtuels dédiés pour une exécution matérielle. mode accéléré. D'autres exigences existent, telles que les cartes graphiques prises en charge, etc., mais je garderai le problème XNA vs OpenGL. En tant qu'architecte informatique, développeur de logiciel, etc., il faudra en tenir compte avant de choisir entre OpenGL et DirectX/XNA ...

Une note de côté est que WebGL est basé sur OpenGL ES3 ...

En outre, ces considérations ne sont pas les seules, mais elles pourraient faciliter le choix de certains ...

2
Aycox

XNA 2.0 nécessite au minimum une carte Shader 1.1. Bien que la vieille 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 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.

1
Chris Masterton