Sé que este es un hilo extremadamente antiguo, pero Unity podría ser de su interés
Clabe45
Respuestas:
129
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:
a diferencia de Tao, que simplemente refleja la API de C:
Gl.glBegin(Gl.GL_POINTS);// double "gl" prefixGl.glColor3ub(255,255,0);// have to pass RGB values as separate argsGl.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.
No creo que estas funciones sean muy representativas, porque todas están en desuso y se eliminaron del perfil principal de OpenGl.
Arne
6
Es cierto que esas funciones se eliminan del perfil principal. Pero los argumentos siguen siendo válidos. "OpenTK es una mejora con respecto a la API Tao, ya que utiliza el estilo idiomático de C # con sobrecarga, enumeraciones fuertemente tipadas, excepciones y tipos .NET estándar"
Syaiful Nizam Yahya
1
El sitio web vinculado no es válido para esta publicación ahora.
Sonny Childs
16
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:
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.
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.
¿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
3
@MegaByte Se debe acceder a ellos mediante la invocación de plataforma.
Expiación limitada
2
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.
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:
a diferencia de Tao, que simplemente refleja la API de C:
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.
fuente
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:
Desafortunadamente, necesitaría hacer esto para cada función OpenGL que llame, y es básicamente lo que Tao ha hecho por usted.
fuente
Se supone que Tao es un buen marco.
Desde su sitio:
fuente
SharpGL es un proyecto que le permite usar OpenGL en sus aplicaciones Windows Forms o WPF.
fuente
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.
fuente
También recomendaría el Tao Framework . Pero una nota adicional:
Eche un vistazo a estos tutoriales: http://www.taumuon.co.uk/jabuka/
fuente
¿Qué le gustaría que hicieran estas bibliotecas de soporte? Usar OpenGL desde C # es bastante simple y no requiere bibliotecas adicionales afaik.
fuente
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 ...
fuente
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.
fuente