2010-08-11 16 views
9

Si escribía una aplicación de gráficos 2D en C# (como software de animación o un secuenciador de música con control de gráficos automático), cuál sería una mejor opción para la biblioteca de gráficos ?Aplicación de gráficos intensivos en C# (con .NET/Mono)

Me gustaría desarrollar una aplicación multiplataforma (al menos portátil en Windows 7, Linux), y me gustaría utilizar solo C#, evitando mezclar código en C++ (debido también a problemas de interoperabilidad).

Ya le he probado a OpenTK, pero carece de documentación, y parece no ser muy estable (¡con Mono, a veces me cuelga el servidor X!) ... Y tal vez ' estoy equivocado, pero creo que no es una biblioteca larga y va a morir ...

¿Hay un bueno y estable OpenGL envoltura para .NET/Mono?

Sé que hay una conexión de Silverlight en Mono (Moonlight), pero he leído que tiene un mal rendimiento.

Gracias.

+0

No estoy de acuerdo con su interpretación de OpenTK. La documentación apenas se necesita, es una envoltura muy delgada con pocos errores. Se está desarrollando activamente y mejorando (¡más delgado!), Aunque en mi experiencia es lo suficientemente estable como para no requerir soporte activo. Yo uso Mono con OpenTK + Windows. Formas, pocos problemas, aunque Mono es bastante raro cuando se trata de ciertas cosas. – Rushyo

+0

@Rushyo: Tal vez mi problema es que tengo poca experiencia con OpenGL, y apenas puedo adivinar qué clases deberían implementar sus métodos: -/ Pero, por ejemplo, me resultó difícil encontrar una manera de escribir algo de texto usando OpenTK. ¿Qué pasa si estudié OpenGL básico (en C++) y luego cambio a OpenTK? ¿Sería una buena idea? –

+1

Escribir texto en OpenGL es un dolor por decir lo menos. OpenTK en realidad incluye una clase (muy obsoleta) llamada 'TextWriter' (IIRC) para ayudar con esto. OpenGL no ofrece absolutamente ninguna funcionalidad de este tipo. Mira esto: http://www.sjbaker.org/steve/omniv/opengl_text.html No confundas 'GLUT' y otras bibliotecas de utilidades similares para OpenGL. Son extras atornillables. OpenGL es un paquete muy delgado. Parece que buscas un marco en lugar de un envoltorio. OpenTK ofrece, en versiones anteriores, más funcionalidad que OpenGL. Está ofreciendo gradualmente la misma funcionalidad a medida que se adelgaza. – Rushyo

Respuesta

3

Hay una biblioteca irrlicht pero decidimos usar OpenTK en nuestros proyectos. Desear algunos inconvenientes en la última versión (1.0) funciona bastante estable en Win7 y también funciona en Linux.

+1

Irrlicht.Net ya no se desarrolla ni es compatible, hay un nuevo proyecto llamado Irrilicht .NET CP (http://sourceforge.net/projects/irrlichtnetcp/), ¡pero parece estar inactivo desde hace 2 años! :-( ... Parece que OpenTK es la mejor opción de .NET. ¿No es así? –

+0

Puedo agregar que lo usamos para la aplicación de mapas 2D como alternativa a GDI y funciona bastante bien. – jethro

1

Puede usar SDL.NET que es un enlace .NET para Simple DirectMedia Layer, una biblioteca utilizada para crear juegos rápidos en 2D.

Otra forma podría ser GTK #, pero no sé sobre su rendimiento gráfico.

+0

He acelerado. intenté SDL.NET, pude construir el ejemplo incluido, pero recibí un error fatal al iniciarlo! –

+0

¿Qué error? ¿Tiene los controladores de gráficos correctamente instalados? – codymanix

+0

"Obtuve un SIGSEGV mientras ejecutaba el código nativo. Esto generalmente indica a error fatal en el tiempo de ejecución mono o una de las librerías nativas utilizada por su aplicación. ". Mis controladores gráficos están instalados correctamente, Compiz se está ejecutando sin problemas y otras aplicaciones 3D funcionan correctamente (en Ubuntu Studio 10.04 64bit). –

0

En este momento, y para sus propósitos, me gustaría recomendar MonoXNA

Alternativamente, CSGL (envoltura de OpenGL para .NET/Mono)

+0

Sitio MonoXNA actividades (por ej .: http://www.monoxna.org/forum) y la lista TODO me hacen pensar que el proyecto fue bien, pero todavía no está vivo. El desarrollo de CsGL se ha detenido desde hace años. Randy Ridge (el autor), ha comenzado un nuevo proyecto llamado Tao. Lamentablemente, el proyecto Tao también parece estar muerto. :-( –

+0

¿Qué pasa con los proyectos muertos? Como dice en CsGL, probablemente se haya vuelto tan bueno como podría ser. – acron

+1

Tiene razón, pero el problema es el soporte: ¿qué pasa si encuentro un nuevo error o necesito preguntarlo? ¿una pregunta sobre algo? Me gusta basar mi software en un proyecto vivo, sobre todo cuando no soy realmente experto sobre el tema relacionado. –

0

Ha sido un tiempo desde que miraba en los juegos multiplataforma con. NET, pero cuando estaba considerando hacerlo, el Unity Game Development Tool parecía bastante atractivo. Supongo que por debajo están usando OpenGL y no sé exactamente dónde se encuentra Unity en términos de si realmente proporcionan su propia API de gráficos o si se trata más bien de proporcionar un conjunto de herramientas integradas para el desarrollo de juegos. Si no lo has examinado antes, vale la pena echar un vistazo.

+0

unidad no es compatible con la implementación en Linux w/mono – IanNorton

0

Ya que está buscando algo activo y compatible, ¿qué hay de Qt? Tiene .NET support. No es algo que haya usado personalmente, pero ciertamente han existido por mucho tiempo.

0

Solo consideraría OpenGL si realmente necesita 3D. ¿Has mirado a El Cairo? Además, hasta donde yo sé, System.Drawing funciona igual de bien en mono + gtk que en Windows con .Net.

Si está interesado puede probar Moonlight.Desktop, la versión estable funciona bastante bien con los controles Silverlight 2.0, la versión beta admite Silverlight 3.0 y parte de la versión 4.0, he hecho una serie de pequeñas aplicaciones que funcionan así en mono en Linux y Windows, pero hubo un poco de pirateo manual de scripts de compilación para construir mis proyectos.

A menos que tenga una razón para no hacerlo, trataría de hacer una aplicación de escritorio silverlight básica en Windows y tener un shell gtk # para Linux/mono mientras todo el tiempo mantener un proyecto de ensamblaje de núcleo (modelo + controlador) edificio para ambas plataformas.

+0

Dado que mi aplicación necesita controles gráficos complejos (y automatizados en tiempo real, tales como: http://pouvoir-choisir.org/logiciel-libre/public/blender_screenshot.png o http://media.createdigitalmedia.net/cdmu/images//2007/06/thor.jpg), creo que necesito el máximo rendimiento, y sé que C# no es el mejor para eso (pero me gustaría evitar C++ y su "impuro" "OO implementación", así que estaba pensando para ti se OpenGL (escribiendo un kit de herramientas GUI personalizado) ... Ehm, ¡sé que es un poco difícil! –

0

Csgl es perfectamente estable ...
... ya que ya no está desarrollado.

Realmente recomiendo el TAO Framework. Es multiplataforma (linux, mac os, windows) y aún está desarrollada. Es bastante grande y tiene muchas características.

Irrlicht y (mono-) Xna están diseñados para juegos de wirting.

Cuestiones relacionadas