¿Usando OpenGl con C #?

¿Hay librerías gratuitas de OpenGL para C #? Si es así, ¿cuál uso y dónde encuentro proyectos de muestra?

¿C # proporciona clases para OpenGL?

OpenTK es una mejora con respecto a la API de Tao, ya que utiliza un estilo idiomático de C # con sobrecarga, enumeraciones fuertemente tipadas, excepciones y tipos estándar de .NET:

GL.Begin(BeginMode.Points); GL.Color3(Color.Yellow); GL.Vertex3(Vector3.Up); 

a diferencia de Tao, que simplemente refleja la C API:

 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 sea más difícil portar pero es increíblemente agradable de usar.

Como beneficio adicional, proporciona representación de fonts, carga de texturas, manejo de entradas, audio, matemática …

Actualización 18.1.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 moverse a MonoGame o SDL2 #.

Creo que lo que @korona significaba era que, dado que solo se trata de una API C, puedes consumirla directamente desde C # con mucho tipeo como este:

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

Desafortunadamente, necesitarás hacer esto para cada función OpenGL que llames, y es básicamente lo que Tao ha hecho por ti.

Se supone que Tao es un buen marco.

Desde su sitio:

El Marco de Tao 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 formularios Windows Forms o WPF.

También recomendaría el Marco Tao . Pero una nota adicional:

Eche un vistazo a estos tutoriales: http://www.taumuon.co.uk/jabuka/

Puede OpenGL sin envoltorio y usarlo de forma nativa en C #. Tal como lo dijo Jeff Mc, tendría que importar todas las funciones que necesita con DllImport.

Lo que dejó de lado es tener que crear contexto antes de poder usar cualquiera de las funciones de OpenGL. No es difícil, pero hay algunas otras DllImports no tan intuitivas que deben hacerse.

He creado un ejemplo de proyecto C # en VS2012 con casi el mínimo necesario para que OpenGL se ejecute en el cuadro de Windows. Solo pinta la ventana de color 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.

¿Qué le gustaría que hagan estas bibliotecas de soporte? Solo usar OpenGL desde C # es lo suficientemente simple y no requiere ninguna biblioteca adicional afaik.

En cuanto a (algo fuera de tema que conozco, pero ya que se mencionó anteriormente) XNA vs OpenGL elección, podría ser beneficioso en varios casos para ir con OpenGL en lugar de XNA (y en otro XNA en lugar de OpenGL …).

Si va a ejecutar las aplicaciones en Linux o Mac utilizando Mono, podría ser una buena opción ir con OpenGL. Además, que no es tan conocido, creo que si tiene clientes que van a ejecutar sus aplicaciones en un entorno Citrix, entonces DirectX / Direct3D / XNA no será una opción tan económica como OpenGL. El motivo es que las aplicaciones OpenGL se pueden alojar conjuntamente en un menor número de servidores (debido a problemas de rendimiento, un solo servidor no puede alojar 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 atendré al problema 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 hacer la elección más fácil para algunos …

XNA 2.0 requiere un mínimo de una tarjeta shader 1.1. Mientras que antigua tecnología, no todos tienen uno. Algunas computadoras portátiles más nuevas (en nuestra experiencia, tabletas Toshiba con gráficos Intel) no tienen soporte para shader 1.1. XNA simplemente no se ejecuta 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.