Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Managed DirectX

Iniciado por maclocke, 19 de Marzo de 2003, 08:16:25 PM

« anterior - próximo »

maclocke

                                Hola a todos, ya teneis un nuevo novato al que echarle una mano (en realidad se que os gusta  :loco: )
Vereis, he estado mirandome C++ de un tiempo a esta parte (sabía algo de C y de Java) y creo que me siento preparado para echarle un vistazo al DirectX 9. Mi pregunta es: ¿como funciona eso del código managed de .NET con DirectX?¿se simplifica mucho la cosa?¿es mucho más lento a cambio?¿merece la pena aprender DirectX directamente de esta forma?                                

MaSteR

                                Nas q tal?!! bienvenido.

Yo uso OpenGL :P a ver si llega alguien de DX.

Un saludo                                

rakhia

                                Nas...

A ver usar managed DirectX tiene la ventaja de que puedes programar usando C# o VB.NET... lenguajes más sencillos y amigables que C++... Además tu aplicación se integra en .NET por lo que puedes aprovechar las ventajas que este ofrece (Garbage Collector y Base Class Library), aunque son discutibles en el caso de un juego...

El rendimiento es superior al que se obtenía usando DirectX 8 desde C# (a través del COM Interop) pero menor que el que se obtiene usando DirectX 8 en C++

Probablemente (aunque no lo se) el rendimiento de managed DirectX sea mejor que el que se obtenía mediante DirectX 8.1 en Visual Basic 6                                

maclocke

                                Gracias por la bienvenida y por responder tan rápido (se respira buen rollo en este foro  8O ),
¿Entonces en cuanto a sencillez la única ventaja que se obtiene es la de poder usar C# o VB?¿Programar en C++ con código managed no va a reportarme ninguna otra ventaja? En ese caso me dejo de tonterías de .Net (además, supongo que será más fácil encontrar tutoriales de programación "clásica",¿no?)                                

rakhia

                                MMmm.... si con alguna otra ventaja te refieres a rapidez... pues no.

A ver, C# es un lenguaje más productivo que C++, de forma que harás más cosas en menos tiempo... Pero evidentemente .NET aunque tiene un buen rendimiento no puede superar a un programa C++ nativo...

... por cierto, si tu intención es usar managed C++, mi consejo es que no lo hagas... si quieres programar en .NET es mejor usar C# (por productividad, ya que el rendimiento es el mismo (asumiendo. claro, que el 100% de tu codigo funciona bajo el CLR)).

En resumen mi consejo: si buscas alto rendimiento usa C++ nativo, pero tampoco descartes managed DirtectX, a lo mejor su rendimiento es suficientemente bueno para lo que deseas y en este caso... para que usar C++ nativo y tardar un mes en lo que en .NET harías en una semana?                                

maclocke

                                Mi problema es que no se aún para que quiero aprender DirectX (¿puro placer masoquista ahora que tengo un poco de tiempo libre?) pero gracias por las respuestas, ahora estoy un poco más encaminado.
Lo que voy a hacer es empezar a mirarme DirectX unmanaged con C++ y cuando se me ocurra que quiero hacer tal vez mire las diferencias entre C# y C++ y me decida a probar con el código managed.
Gracias de nuevo, cuando me vayan surgiendo dudas me volveré a aprovechar de vuestros conocimientos  :ojo:                                

lord_taran

                                Saludos!
Soy nuevo en este foro también, aunque llevo un tiempecillo bicheando... La cosa está en que estaba probando a aprender primero con DirectX 7, pa empezar en 2D y tal, pero eso era en VB 6.0... Pero me he puesto con c# y ma encantao, por lo que VB 6.0 ha sido vilmente desinstalado de mi HD :P
Bien, pues ahora estoy a ver si me pongo con DirectX 9 (me he bajado el SDK de Microsoft para C#, que no suelen estar bien), pero pensando todo esto que, si en vez de dejar el ejecutable en CLR (creo que se llamaba) así, si lo compilamos a código nativo el desempeño sería bueno...
¿Qué pensáis entonces?                                
n saludo!
Lord Taran
Las Noyas de Taran

rakhia

                                MMMm...

No termino de entender lo que propones lord_taran... A ver, si usas C# tu ejecutable estará siempre en el CLR... el único lenguaje incorporado en .NET que puede generar código nativo win32 es C++

Aunque bueno... el rendimiento de .NET no es en general malo, así que antes de descartar C# y managed DX porque funcionan bajo el CLR, prueba de hacer algunos tests de rendimiento... es muy probable que para lo que quieras hacer el rendimiento de C# sea más que suficiente.                                

MaSteR

                                Sobre rendimiento opino q no es todo cm parece, o sea tanto C++ ni ostias.
El rendimiento de C# siendo un lenguaje gestionado esta jodidamente, ni os imaginais cuanto, cerca de la potnecia de C++ siendo una tecnica nueva en concepto ya q, quien se imagina q un lenguaje estionado seria mas rapido q un nativo? Pues parece q se esta consiguiendo crei leer en algun lado sobre .NET ;) no obstante para ponerlo mas dificil el compilador de .NET para C++ depura mas el coedigo y aumenta el potencial del compilado. yo tengo un codigo de VC 6 de 1.94 MB y en .NET es 1.13 :D y no te digo na xD la velocidad no se nota pq no me chupa el PC pero imagina el rendimiento cm mejora.Leed algo sobre C# y C++ sobre lo q os he dicho es muy interesante !

Un saludo                                

rakhia

                                MMmm....
... hombre sí... el rendimiento de .NET es muy bueno, aunque de momento no llega al rendimiento de una aplicación nativa en C++...

Primero porque el CLR tiene un overhead evidente, que aunque se usen técnicas JIT y de optimización dinámica de código afecta al rendimiento del programa.
Segundo porque la base class library en si misma también "penaliza" el rendimiento... en C++ tienes la opción de usar MFC o bien programar con el api Win32 a pelo, que es eso último lo que te recomiendan...

MMmm... no confundir tamaño del ejecutable con rendimiento, no tiene nada que ver... por ejemplo, con VB6 haces hermosos ejecutables de apenas 100 ks... el linking de .NET es siempre dinámico, mientras que el de C++ puede ser estático...

Pero en resumen sí... .NET ofrece un buen rendimiento y por eso digo que antes de lanzarse a la torera y meterse en DX con C++ uno puede probar managed DX con C#...                                

MaSteR

                                a ver ............


si mi release de C++ compilado con VC6 es de 1.94 y el compilador del VC7 es MAS DEPURACION etc... se nota q si es 1.13 va mejor  se nota cm depura codigo makina tio ¬¬                                






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.