Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





XNA/C# vs SDL/Alegro/C/C++

Iniciado por Mcur, 03 de Octubre de 2010, 01:19:32 PM

« anterior - próximo »

Mcur

Hola a todos.

Después de unos años trabajando en C/C++ y librerías SDL/Allegro veo que estas dos últimas librerías se me quedan algo cortas.
La verdad es que ambas me gustan mucho, pero cuando me refiero a cortas es en térmnos de rendimiento.
Cuando trabajo con muchos sprites 2D grandes en pantalla, el rendimiento del programa baja a niveles cosmicos.



Preguntas para los que controlais XNA/C#:

¿Me resultaría cómodo dar el salto de C/C++ a C#?

He leído que en C# no se trabaja a tan bajo nivel como en C/C++. ¿QUé significa eso? ¿Pierdo mis maravillosos punteros?

Puedo programar en C/C++ para XNA??

Puedo crear aplicaciones para Winsdows en XNA o solo son para Xbox360?? O son compatibles entre ellas 100%??

XNA trabajaría los sprites 2D grandes mejor que SDL o Allegro?? Creo que se apoya en DirectX no??
Trabaja directamente con la tarjeta gráfica o tira de CPU??


Como véis, no tengo ni idea de como funciona XNA/C#, llevo un par de días intentando informarme de estos temas y como siempre encuentro información contradictoría. Unos dicen una cosa y otros otra.

Un saludo y gracias por las respuestas.

Vicente

A ver si te puedo ayudar:

- El salto de C/C++ a C# te va a costar según sepas de POO. Si sabes poco te va a costar más que si estás más acostumbrado.
- No hay punteros en C# (bueno, sí los hay pero casi nunca hace falta usarlos para hacer aritmética de punteros y cosas así).
- Con XNA solo se puede usar C#.
- Puedes crear aplicaciones para Windows sin problemas.
- Supongo que sí, pero no conozco mucho SDL o Allegro. Un sprite en XNA son dos triángulos con textura, todos los efectos se le aplican por la GPU (con shaders).

Supongo que según donde preguntes y a quien preguntes, unos te dirán que una librería es mejor que otra :p Pero como apunte curioso te diré que el creador original de Allegro es el Lead Programmer de XNA ;) (Shawn Hargreaves).

Un saludo!

Vicente

MrK

No creo que el problema de los sprites grandes sea debido a allegro, sdl o xna, sino mas bien de la targeta grafica. Otra cosa seran los efectos por shader, hace mucho que no toco SDL y no se si ahi tambien van asi.

Si sabes programar en C++ no creo que tengas muchos problemas, pero microsoft podria haberse currado el xna para c++ tambien, transformar miles de lineas de codebase para hacer un port es un autentico coñazo, y mas cuando el C++ managed hace años que lo tienen. Y si, "si te gustan" los punteros vas a sufrir un poco con el C# (yo las he pasado canutas, cuando acabe un par de ports a xna me vuevo al C++  ^_^ )

Mcur

#3
XNA se ve potente, muy potente. POr lo que he leído es menos potente que DirectX pero tampoco se puede estar inventando la rueda constantemente y busco una herramienta que me de resultados a corto-medio plazo. Meterme con DirectX (Ya lo he hecho en varias ocasioes) significa trabajar muy duro durante meses para algo relativamente sencillo que es mover sprites 2D por la pantalla.

Entonces en XNA manejas las 2D sobre políginos 3D que se mueven en X e Y y se anula la Z no??
SI es así trabaja directo con la GPU y no con la CPU como creo que hace SDL/Allegro.

Me tira un poco para atrás el tener que coger y aprender C#, ya para mi fue una odisea pasar de C a C++, cambiar la mentalidad de programación estructurada a la POO pero tengo que decir que C++ me encanta. Aunque dentro de ese sentimiento haya algo de masoquismo, resolver problemas sencillos en C era ponerte y "palante" mientras que con C++...

EL tema de los port es algo que no había pensado, la verdad es que ahora que lo veo tiene pinta de seria putada. Y porque no desarrollar XNA en C++?? Porque C# es mas sencillo?? es mas potente a corto plazo??

Muchas gracias por las respuestas.

Ahora seguiré informandome y viendo que hago. Aprendí C/C++ pensando en la multiplataforma y ya veis, para XNA tengo que aprender C#, para Mac y sus iPhones tengo que aprender Objetive-C...

De verdad, es solo un pensamiento personal, pero... No parece que lo ponen tan dificil para impedir que todo sea compatible?? Vamos, poco a cambiado la programación en estos últimos años para estar tocando tanto las formas. O acaso hay mucha diferencia entre C#, C++ o Objetive-C???

XÑA

Tranquilo, para sprites 2D tiene una clase que es SpriteBatch que hace muy sencilla su utilización. Luego si te quieres complicar, ya es cosa tuya, pero hacer juegos en 2D está tirado, a parte que hay montones de ejemplos  :o

Hechelion

¿Estoy mal o creía que con SDL puedes usar OpenGL y usar igual la GPU?

Y lo digo porque hay proyectos como NWN o RL que usan SDL para las gráficas 3D (las versiones linux) y jamas note que tuvieran menos rendimiento que sus pares de windows con directX. Para mi que el problema es por usar la CPU en vez de aprovechar la GPU y hasta donde sé, eso no es problema de SDL. (Allegro ni idea, hace años de años que no lo toco)






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.