2009-02-11 22 views
108

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

¿C# proporciona clases para OpenGL?

+0

Sé que este es un hilo extremadamente antiguo, pero [Unity] (https://unity3d.com/) podría ser de su interés – clabe45

Respuesta

3

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

+0

¿En qué espacio de nombres se pueden encontrar estas clases? – MegaByte

+4

OpenGL no es parte de .NET, a partir de la versión 4.0 – mafu

+2

@MegaByte Se debe acceder a través de la invocación de la plataforma. –

14

Se supone que Tao es un buen marco.

De su sitio:

El Tao Framework for .NET es una colección de encuadernaciones para facilitar el desarrollo de aplicaciones multimedia multiplataforma utilizando .NET y Mono plataformas.

+1

El nuevo sitio web para Tao es: [Tao Framework] (http://www.mono-project.com/Tao) – Thymine

6

También recomendaría el Tao Framework. Sin embargo, una nota adicional:

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

+0

No tengo idea de qué le pasó a Tao cuando la página se cayó hace bastante tiempo. – DMan

+0

El nuevo sitio web para Tao es: [Tao Framework] (http://www.mono-project.com/Tao) – Thymine

+1

Tao parece ser un objetivo en movimiento. Actualicé el enlace, porque también se ha movido de mono ahora a sourceforge. – Oliver

0

XNA 2.0 requiere un mínimo de un 1,1 tarjeta de sombreado. 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 & compatible con Lua.

15

Creo que lo @korona significaba era ya que es sólo una API de C, que puede consumir desde C# directamente con una diablos de un montón de escribir así:

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

Usted lamentablemente tendría que hacer esto para cada función de OpenGL que llame, y es básicamente lo que Tao ha hecho por usted.

+0

¿Cómo harías para eso en Linux (con mono)? – dcousens

+0

Básicamente exactamente lo mismo, http://www.mono-project.com/Interop_with_Native_Libraries –

119

OpenTK es una mejora sobre el API Tao, ya que utiliza # estilo de C idiomática con la sobrecarga, las enumeraciones de tipo fuerte, excepciones y tipos de .NET estándar:

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

en contraposición a 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 que proporciona la representación de fuentes, textura carga, manipulación de entrada, audio, matemáticas ...

actualización 18/01/2016: Hoy en día el mantenedor OpenTK tiene stepped away from the project, dejando su futuro incierto. Los foros están llenos de spam. El mantenedor recomienda moverse a MonoGame o SDL2 #.

+5

No creo que estas funciones sean muy representativas, ya que están desaprobadas y se eliminan del perfil de núcleo de OpenGl. – Arne

+5

Es cierto que esas funciones se eliminan del perfil del núcleo. Pero los argumentos siguen siendo válidos. "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 de .NET estándar" –

+0

El sitio web vinculado ahora no es válido para esta publicación. –

8

SharpGL es un proyecto que le permite usar OpenGL en sus formularios Windows Forms o WPF.

5

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

Lo que omitió 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.

+4

su enlace está muerto, por favor puede compartir su proyecto. Gracias. – dangerousdave

1

En cuanto a (algo fuera de tema que conozco, pero ya que se mencionó anteriormente) elección XNA vs OpenGL, 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, desarrolladores de software, etc Esto tendrá que considerar antes de elegir entre OpenGL y DirectX/XNA ...

Una nota al margen es que WebGL está basado en OpenGL ES3 que yo sepa ...

Como una nota adicional, estas no son las únicas consideraciones, pero podrían hacer la elección más fácil para algunos ...