Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Porque Usar C# Y No C++

Iniciado por , 23 de Diciembre de 2004, 02:16:27 PM

« anterior - próximo »

StraT

 No veo un post mas indicado para poner una pruebilla que he hecho, la cosa se trata de dibujar un triangulo en OpenGl, sobre una ventana SDL, usando C# con la libreria Tao:

RenderContext.cs:



#region using

using Tao.Sdl;
using Tao.OpenGl;

#endregion

namespace Render

{

   public class RenderContext

   {

       public RenderContext(int width, int height, int bbp, int flags)

       {

           Sdl.SDL_Init(Sdl.SDL_INIT_VIDEO);
           Sdl.SDL_SetVideoMode(width, height, bbp, flags);
           Sdl.SDL_WM_SetCaption("SSE Engine", null);

           Gl.glViewport(0, 0, width, height);
           Gl.glMatrixMode(Gl.GL_PROJECTION);
           Gl.glLoadIdentity();

           Glu.gluPerspective(45.0f, width /
               height, 0.1f, 100.0f);

           Gl.glMatrixMode(Gl.GL_MODELVIEW);
           Gl.glLoadIdentity();

       }

   }

}



Viewer.cs:



#region using

using Tao.Sdl;
using Tao.OpenGl;
using Render;

#endregion

public class Viewer
{

   static int Renderiza()

   {

       Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);

       Gl.glLoadIdentity();

       Gl.glBegin(Gl.GL_TRIANGLES);                    

           Gl.glColor3f(1.0f,0.0f,0.0f);            
     Gl.glVertex3f( 0.0f, 1.0f, -3.0f);
 
     Gl.glColor3f(0.0f,1.0f,0.0f);  
     Gl.glVertex3f(-1.0f,-1.0f, -3.0f);
 
     Gl.glColor3f(0.0f,0.0f,1.0f);
           Gl.glVertex3f( 1.0f,-1.0f, -3.0f);
   
       Gl.glEnd();

    return 1;

   }

   static void Main()

   {

       RenderContext rContext = new RenderContext(800, 600, 32,
           Sdl.SDL_OPENGL);

       bool AplicacionFinalizada = false;

    Sdl.SDL_Event evento;

    while ( ! AplicacionFinalizada )
   
       {
 
           if (Sdl.SDL_PollEvent(out evento) > 0)
 
           {
 
               if ( evento.type == Sdl.SDL_QUIT )
 
               {
   
                   AplicacionFinalizada = true;
 
               }
 
               if ( evento.type == Sdl.SDL_KEYDOWN )
 
               {
   
                   if ( evento.key.keysym.sym == Sdl.SDLK_ESCAPE )
   
                   {
   
                       AplicacionFinalizada = true;
   
                   }
 
               }
 
           }
 
           else
 
           {

               Renderiza();
               Sdl.SDL_GL_SwapBuffers();

           }

       }
 
Sdl.SDL_Quit();

   }

}



Y punto, funciona bien, si tengo tiempo ya pondre una captura. Sin ánimo de caldear la discusion, podriamos comparar el numero de lineas en c++ y de archivos...

Saludos
quot;Solo hay dos cosas infinitas, el universo y la estupidez humana, aunque de lo primero no estoy muy seguro\\\" Einstein

Vicente

Cita de: "donald"se basan en Axiom , un motor c#

realmforge...hacer juegos de rol sin programar...jeje ...no sé yo...

estaría muy bien ;) ...pero suena a sci-fi...
Hola,

ya, yo me refería más a igual que pongo que los tios quieren hacer RealmForge multiplataforma, pues que todavía no lo han logrado. Aunque parece más cosa de DirectX vs OpenGL que de .NET en si. La verdad es que el SDK que quieren hacer es muy ambicioso... A ver que sale ;) Un saludo!

Vicente

 
Citarya, yo me refería más a igual que pongo que los tios quieren hacer RealmForge multiplataforma, pues que todavía no lo han logrado. Aunque parece más cosa de DirectX vs OpenGL que de .NET en si. La verdad es que el SDK que quieren hacer es muy ambicioso... A ver que sale wink2.gif Un saludo!

Me alegro que hayas sacado el tema de DirectX, nadie en su sano juicio haria nada en DirectX con vistas a rularlo en linux.

martiño


Pogacha

 Me parece que el numero de lineas no importa, uno cutea y pastea, lo importante es la potencia (capacidad * simplesa), el c-sharp una vez entendido su mecanizmo es mucho mas claro y casi igual de capáz, sino el basic seria mejor pues usa menos lineas  :P .

Entre DX y OpenGL, Ogl es mejor sin duda (mismas capacidades, esta mas actualizado y es multiplataforma), pero para windows especificamente es mejor DX (pues esta hecho a medida) y entre c# y c++, no se pueden comparar pues tienen target distintos, c++ tiene todas las ventajas, pero para windows y cierto tipo de programas c# tiene las de ganar efectivamente, mayor simplesa, mas potencia y hecho a medida.
Con lo que a mi respeta, tengo cierto reselo con microsoft y sus intentos de monopolización encubiertos y trato de escapar todo lo que puedo de él (inutilmente  :angry: ), me parece que usar tanto DX como C# seria rendirse ante el opresor que inpone su mercado y esta es la unica razon para negarse a usar c# (cuando corresponde) que yo veo.

Saludos.

Grugnorr

 Cansa leer tantas paparruchadas.

Primero y fundamental: Si han escogido hacer el motor en C#, será porque les motiva, y siendo un proyecto de hobby, como si lo han hecho en cobol.

Segundo: Yo diría que bastante bien les está yendo en tan poco tiempo con un lenguaje nuevo ;)

Tercero: Mucho leo de Java, pero nunca he visto nada decente de Java en 3d. Para los que dicen que C# es exactamente lo mismo que Java, que se culturicen un poco.

Cuarto: C# es un lenguaje standard ECMA, Java es propiedad de SUN. Eso es totalmente irrefutable, sí que el framework tiene mucha parte propiedad de Microsoft, si os pasáis por la web de MONO lo veréis muy clarito, simplemente se implementan esos módulos con APIs multiplataforma(GTK para WinForms, por ejemplo).

Quinto: Id a al web de AxiomEngine y los zelotes de la multiplataforma( a ver cuántos usáis otro SO ) os bajáis Axiom corriendo en Linux con TaoGl y C# en mono

Sexto: Os puedo asegurar que integrar distintas tecnologías en un proyecto, como usar una dll escrita en C++, objetos COM, otros lenguajes, etc etc es trivial en C#, un infierno en Java

Septimo, volviendo al tema de Java y C#... quien quiere comparar cosas tan básicas en eficiencia como colecciones genéricas, templates en c++ ?

PD: Algún profesional, que dé por favor su versión de cómo hoy en día los juegos descargan todo el código que pueden de C++ a script, editores y demás capas sobre C++... Creéis que UnrealScript es más rápido que C#?  ;)
hat the hells!

martiño

 Hola,

CitarCansa leer tantas paparruchadas.

La gente estaba dando su punto de vista de forma civilizada hasta tu post, hasta que llegaste tu en plan de avatar de la verdad y la justicia.

CitarPrimero y fundamental: Si han escogido hacer el motor en C#, será porque les motiva, y siendo un proyecto de hobby, como si lo han hecho en cobol.

Yo no me he metido con esto, cada uno programa en lo que le da la gana, y no voy a ser yo el que quiera imponer nada a nadie.

CitarMucho leo de Java, pero nunca he visto nada decente de Java en 3d. Para los que dicen que C# es exactamente lo mismo que Java, que se culturicen un poco.

Hay bindings de OpenGL para Java, perfectamente acelerado por hardware. Culturizate tu.

CitarC# es un lenguaje standard ECMA, Java es propiedad de SUN. Eso es totalmente irrefutable, sí que el framework tiene mucha parte propiedad de Microsoft, si os pasáis por la web de MONO lo veréis muy clarito, simplemente se implementan esos módulos con APIs multiplataforma(GTK para WinForms, por ejemplo).

Pretender vendernos la moto de que C# es abierto es algo que no merece comentarios. Usar .NET para desarrollar en linux tampoco. Los hechos son que en java estan metidos varios grandes fabricantes (Sun, Intel, HP, IBM por ejemplo) y en C# no. Lo de la ECMA es propaganda. Los hechos son lo que cuentan.

CitarId a al web de AxiomEngine y los zelotes de la multiplataforma( a ver cuántos usáis otro SO ) os bajáis Axiom corriendo en Linux con TaoGl y C# en mono

Hay gente que ha visto el explorer rulando en Solaris, y que? Estoy hablando de soporte multiplataforma serio en el que una empresa pueda confiar. Cosa que es muy importante si tienes una empresa, y no quieres estar vendido a un fabricante. Con respecto a los insultos no voy a comentar nada.

CitarOs puedo asegurar que integrar distintas tecnologías en un proyecto, como usar una dll escrita en C++, objetos COM, otros lenguajes, etc etc es trivial en C#, un infierno en Java

Si tienes que integrar todas estas tecnologias en tus proyectos es porque microsoft ha hecho tropecientas APIs y lenguajes para lo mismo, cada cual mas lamentable. Todo eso que citas esta hecho por Microsoft, lo que faltaba es que no se pudiesen integrar. Como ejemplo me remito a cuantas formas radicalmente diferentes de hacer una interfaz para windows hay, todas de Microsoft, o cuantos lenguajes se ha inventado Microsoft, muchos en desuso.

CitarSeptimo, volviendo al tema de Java y C#... quien quiere comparar cosas tan básicas en eficiencia como colecciones genéricas, templates en c++ ?

Explicate un poco mas en este punto, porque no se entiende lo que quieres decir. Al menos no lo entiendo yo.

CitarPD: Algún profesional, que dé por favor su versión de cómo hoy en día los juegos descargan todo el código que pueden de C++ a script, editores y demás capas sobre C++... Creéis que UnrealScript es más rápido que C#? wink2.gif

Esto es mezclar el tocino con la velocidad. Cada cosa es para lo que es. En el World of Warcraft por ejemplo se puede modificar la UI con lua y XML, para que cualquiera pueda modificarla facilmente.

Saludos.

seryu

Cita de: "Pogacha"Me parece que el numero de lineas no importa, uno cutea y pastea, lo importante es la potencia (capacidad * simplesa), el c-sharp una vez entendido su mecanizmo es mucho mas claro y casi igual de capáz, sino el basic seria mejor pues usa menos lineas  :P .

Entre DX y OpenGL, Ogl es mejor sin duda (mismas capacidades, esta mas actualizado y es multiplataforma), pero para windows especificamente es mejor DX (pues esta hecho a medida) y entre c# y c++, no se pueden comparar pues tienen target distintos, c++ tiene todas las ventajas, pero para windows y cierto tipo de programas c# tiene las de ganar efectivamente, mayor simplesa, mas potencia y hecho a medida.
Con lo que a mi respeta, tengo cierto reselo con microsoft y sus intentos de monopolización encubiertos y trato de escapar todo lo que puedo de él (inutilmente  :angry: ), me parece que usar tanto DX como C# seria rendirse ante el opresor que inpone su mercado y esta es la unica razon para negarse a usar c# (cuando corresponde) que yo veo.

Saludos.
pogacha lo ha resumido perfectamente, dejad de morderos los cuellos  :D  

Vicente

 Hola,

sin ganas de flame, solo contesto a esto ;)

Citar
Pretender vendernos la moto de que C# es abierto es algo que no merece comentarios. Usar .NET para desarrollar en linux tampoco. Los hechos son que en java estan metidos varios grandes fabricantes (Sun, Intel, HP, IBM por ejemplo) y en C# no. Lo de la ECMA es propaganda. Los hechos son lo que cuentan.

A ver, Mono se puede usar en linux, supongo que de tanto te hemos dado la murga, has visto algo de Mono, pero por si acaso, esta es su web.

Te recomiendo que te leas las faq (son un poco viejas, pero bueno, una idea te darán). Algunos ejemplos:

Citar
The Mono Project is an open development initiative sponsored by Novell that is working to develop an open source, UNIX version of the Microsoft .NET development platform. Its objective is to enable UNIX developers to build and deploy cross-platform .NET Applications. The project will implement various technologies developed by Microsoft that have now been submitted to the ECMA for standardization.

Citar
Question 52: What operating systems does Mono run on?
Mono is known to run on Linux, UNIX and Windows systems.

Citar
Question 57: Can Mono run applications developed with the Microsoft.NET framework?
Yes, Mono can run applications developed with the Microsoft .NET Framework on UNIX. There are a few caveats to keep in mind: Mono has not been completed yet, so a few API calls might be missing; And in some cases the Mono behavior *might* be incorrect.

Entre la gente que hace eso, esta Icaza. No se, a lo mejor cuando veas Gnome programado en C# (que es uno de los objetivos que tiene), ya te convences (o te pasas a KDE :P).

Y por lo de abierto y liberado, supongo tambien que si no fuera abierto y pudieran darles la puñalada, Novell y semejante grupo de gente que hay detrás de Mono, Gtk#, y todos los tropocientos ports a .NET que existen para Linux, no lo estarían haciendo... Vamos, creo que se lo habrán pensado bastante antes de jugarsela...

Poco más, un saludo!

Vicente

 Cuando todas vuestras profecias se cumplan yo programaré en C#.


martiño


Grugnorr

 Martiño:

Cuando la opinión es decir falsas verdades y mentiras, son paparruchadas, sin ánimo de ofender. Hay cosas que son puntos de vista, como yo puedo decir que me apesta la sintaxis de VB, y cosas que son hechos.

CitarHay bindings de OpenGL para Java, perfectamente acelerado por hardware. Culturizate tu.

Jajaja, claro que hay bindings de OGL en Java, y en Python y... por poder hasta en Macros de Excel a través de COM. Yo he dicho: "No he visto nada decente de 3d en Java", por un lado (no que no se pueda hacer), y por otro lado, que todos los que afirman que C# no tiene nada nuevo sobre Java, que se culturicen un poco. También tiene VB muchas cosas "nuevas" sobre C++ y no por eso va a ser mejor, pero desde mi punto de vista, C# aporta mejoras y un refinamiento sobre Java, otras cosas son indiscutibles, como temas de eficiencia en colections.


Citar
Pretender vendernos la moto de que C# es abierto es algo que no merece comentarios. Usar .NET para desarrollar en linux tampoco. Los hechos son que en java estan metidos varios grandes fabricantes (Sun, Intel, HP, IBM por ejemplo) y en C# no. Lo de la ECMA es propaganda. Los hechos son lo que cuentan.

Uhm, de qué hablas?. El lenguaje C# es standard abierto, Java no. Cuando quieras discutirlo infórmate un poco. Que haya muchos grandes fabricantes trabajando con Java qué tiene que ver con el lenguaje como standard abierto o no?. Pues lo de ECMA será propaganda, pero ya hay 2 implementaciones OpenSource multiplataforma de C# en marcha, Mono y DotGnu. No conozco ninguna implementación de Java OpenSource, si me das un link te lo agradecería eternamente

Me salto tontunas que en vez de hablar de C#, los intentan desprestigiar por Microsoft, yo opino que de 10 cosas qeu hace MS, 2 son buenas y una muy buena, sí. Curiosamente .NET es la mejor desde Windows95 y DX8 diría yo ^_^

CitarSeptimo, volviendo al tema de Java y C#... quien quiere comparar cosas tan básicas en eficiencia como colecciones genéricas, templates en c++ ?

Uhm, a ver como lo re-explico. Estoy seguro que sabes lo que son las templates de C++, y sabrás que sirven para implementar colecciones de datos genéricas (list es una lista genérica). En Java a partir de no sé qué versión tienes templates( llamadas generics en C#), en C# a partir de 2.0. Bien, la implementacióin de Java es lentísima en comparación con la de C# ( y la de C++, claro).

CitarEsto es mezclar el tocino con la velocidad. Cada cosa es para lo que es. En el World of Warcraft por ejemplo se puede modificar la UI con lua y XML, para que cualquiera pueda modificarla facilmente.

Uhm, en parte sí si lo enfocas en extensibilidad. Si te centras en facilidad de desarrollo que es lo que yo digo, no. Mira los juegos del Unreal Engine, o los bots de los Quake o....

PD: Si juegas al WoW en la beta koreana, server de WoW-Esp(10º ordenado por name), en la Horda, dime un nick donde charlar
hat the hells!

martiño

 Bueno, yo ya me cansé de pelearme con vosotros y doy por zanjada esta discusión. Vosotros no me vais a convencer a mi de que deje de hacer juegos en C++ y por lo que parece tampoco yo a vosotros de lo contrario. Guardo mis fuerzas para otra conversación mas productiva.

Saludos a todos.

Grugnorr

 
CitarBueno, yo ya me cansé de pelearme con vosotros y doy por zanjada esta discusión. Vosotros no me vais a convencer a mi de que deje de hacer juegos en C++ y por lo que parece tampoco yo a vosotros de lo contrario. Guardo mis fuerzas para otra conversación mas productiva.

Dejas muy claro que hablas de lo que te apetece, quien te ha dicho que hagas juegos en C#?  :blink:

PD: Vaya diálogo de besugos tío. Yo, y por lo que leo los demás, sólo hemos aclarado puntos que son falsos, y hemos añadido nuestros puntos de vista en lo subjetivo. Ya sé que M$ es el demonio y tal y cual...
hat the hells!






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.