Respuestas:
OpenTK es una mejora sobre la API de Tao, ya que utiliza el estilo idiomático de C # con sobrecarga, enumeraciones fuertemente tipadas, excepciones y tipos de .NET estándar:
GL.Begin(BeginMode.Points);
GL.Color3(Color.Yellow);
GL.Vertex3(Vector3.Up);
a diferencia de Tao, que simplemente refleja la API de 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
Esto hace que la migración sea más difícil, pero es increíblemente agradable de usar.
Como beneficio adicional, proporciona renderizado de fuentes, carga de texturas, manejo de entradas, audio, matemáticas ...
Actualización 18 de enero de 2016 : Hoy, el mantenedor de OpenTK se ha alejado del proyecto , dejando su futuro incierto. Los foros están llenos de spam. El mantenedor recomienda pasar a MonoGame o SDL2 #.
Actualización 30 de junio de 2020 : OpenTK ha tenido nuevos mantenedores por un tiempo y tiene una comunidad de discordia activa. Entonces, la recomendación anterior de usar otra biblioteca no es necesariamente cierta.
Creo que lo que @korona quiso decir es que, dado que es solo una API de C, puedes consumirla desde C # directamente con una gran cantidad de escritura como esta:
[DllImport("opengl32")]
public static extern void glVertex3f(float x, float y, float z);
Desafortunadamente, necesitaría hacer esto para cada función OpenGL que llame, y es básicamente lo que Tao ha hecho por usted.
Se supone que Tao es un buen marco.
Desde su sitio:
Tao Framework para .NET es una colección de enlaces para facilitar el desarrollo de aplicaciones de medios multiplataforma utilizando las plataformas .NET y Mono.
SharpGL es un proyecto que le permite usar OpenGL en sus aplicaciones Windows Forms o WPF.
Puede OpenGL sin un contenedor y usarlo de forma nativa en C #. Tal como dijo Jeff Mc, tendría que importar todas las funciones que necesita con DllImport.
Lo que dejó fuera es tener que crear contexto antes de poder usar cualquiera de las funciones de OpenGL. No es difícil, pero hay algunas otras importaciones DllImports no tan intuitivas que deben hacerse.
He creado un proyecto C # de ejemplo en VS2012 con casi el mínimo necesario para que OpenGL se ejecute en Windows. Solo pinta la ventana de azul, pero debería ser suficiente para comenzar. El ejemplo se puede encontrar en http://www.glinos-labs.org/?q=programming-opengl-csharp . Busque el ejemplo No Wrapper en la parte inferior.
También recomendaría el Tao Framework . Pero una nota adicional:
Eche un vistazo a estos tutoriales: http://www.taumuon.co.uk/jabuka/
¿Qué le gustaría que hicieran estas bibliotecas de soporte? Usar OpenGL desde C # es bastante simple y no requiere bibliotecas adicionales afaik.
Con respecto a la opción (algo fuera de tema, lo sé, pero ya que se mencionó anteriormente) XNA vs OpenGL, podría ser beneficioso en varios casos optar por OpenGL en lugar de XNA (y en otros XNA en lugar de OpenGL ...).
Si va a ejecutar las aplicaciones en Linux o Mac usando Mono, podría ser una buena opción ir con OpenGL. Además, lo que creo que no es tan conocido, si tiene clientes que van a ejecutar sus aplicaciones en un entorno Citrix, DirectX / Direct3D / XNA no será una opción tan económica como OpenGL. La razón de esto es que las aplicaciones OpenGL pueden co-hospedarse en una menor cantidad de servidores (debido a problemas de rendimiento, un solo servidor no puede albergar un número infinito de instancias de aplicaciones) que las aplicaciones DirectX / XNA que requieren servidores virtuales dedicados para ejecutarse en hardware. modo acelerado. Existen otros requisitos, como tarjetas gráficas compatibles, etc., pero me mantendré en el problema de XNA vs OpenGL. Como arquitecto de TI, desarrollador de software, etc., esto deberá tenerse en cuenta antes de elegir entre OpenGL y DirectX / XNA ...
Una nota al margen es que WebGL se basa en OpenGL ES3 afaik ...
Como nota adicional, estas no son las únicas consideraciones, pero podrían facilitar la elección para algunos ...
XNA 2.0 requiere como mínimo una tarjeta shader 1.1. Si bien es una tecnología antigua, no todos tienen una. Algunas computadoras portátiles más nuevas (en nuestra experiencia, las tabletas Toshiba con gráficos Intel) no tienen soporte para shader 1.1. XNA simplemente no se ejecutará en estas máquinas.
Este es un problema importante para nosotros y hemos cambiado a Tao y OpenGL. Además, con Tao tenemos enlaces para audio y soporte Lua.