Difference between revisions of "Ca:SDL gfx"

From X-Moto
Jump to: navigation, search
 
m (Reverted edits by Opofefemucu (Talk) to last revision by Trullo)
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[SDL_gfx|English]] - [[Es:SDL_gfx|Español]]
 
[[SDL_gfx|English]] - [[Es:SDL_gfx|Español]]
  
== Analisis de l'SDL_gfx ==
+
== Anàlisis de l'SDL_gfx ==
  
L'OpenGL es el motor interpret de grafics de l'X-Moto. Proveeix un aspecte bonic al joc.
+
L'OpenGL es el motor interpret de gràfics de l'X-Moto. Proveeix un aspecte bonic al joc. El problema que hi ha amb l'OpenGL es que requereix de hardware i software especial.
 +
Per tant, nosaltres actualment estem escrivint un segon ''front-end'' gràfic al X-Moto utilitzant la llibreria de l'SDL_gfx[http://www.ferzkopp.net/Software/SDL_gfx-2.0/]
  
El problema que hi ha amb l'OpenGL es que requereix de hardware i software especial.
+
Esperem que el ''front-end'' de l'SDL_gfx sigui una bona alternativa per l'OpenGL però no un reemplaç. En un mon idíl·lic ens agradaria que es pogués canviar entre tots dos motors durant l'execució.
Per tant, nosaltres actualment estem escrivint un segont ''front-end'' grafic al X-Moto utilitzamt la llibreria de l'SDL_gfx[http://www.ferzkopp.net/Software/SDL_gfx-2.0/]
 
  
Esperem que el ''front-end'' de l'SDL_gfx front end sigui una bona alternativa per l'OpenGL pero no un reemplaç..
+
== Actuals motors intèrprets ==
En un mon idilic ens agradaria que es pogues canviar entre tots dos motors durant l'execucio.
+
[[Image:Xmoto-0.2.3_opengl_normal.png|thumb|xmoto amb opengl normal]]
 +
[[Image:Xmoto-0.2.3_opengl_ugly.png|thumb|xmoto amb opengl lleix]]
  
== Current rendering engines ==
+
Hi ha dos tipus d'intèrprets, un normal i un altre lleix. Tots dos estan basats en l'opengl, que requereix un bon hardware d'opengl en funcionament per que el software de l'opengl encara no es prou ràpid per una bona jugavilitat.
[[Image:Xmoto-0.2.3_opengl_normal.png|thumb|xmoto in normal opengl mode]]
+
Pensem que el ''front-end'' de l'interpret SDL_gfx es veuria millor que el tipus d'intèrpret lleix del motor OpenGl.
[[Image:Xmoto-0.2.3_opengl_ugly.png|thumb|xmoto in ugly opengl mode]]
+
Els dos tipus d'intèrprets actuals es poden intercanviar durant l'execució i s'aplocan utilitzant declaracions de if/else en el codi.
  
There are currently two rendering modes a normal mode and an ugly mode. Both are opengl based modes
+
== El VDraw i l'estructura de l'Interfície gràfica d'usuari (''GUI'')  ==
that require good working opengl hardware because software OpenGL is not fast enough for good gameplay.
+
[[Image:Classvapp_app_inherit_graph.png|frame|Vapp diagrama d'herències]]
We think the SDL_gfx rendering frontend should look better then the ulgy OpenGL rendering engine.
 
The two rendering modes currently can be switched at runtime and are implemented by having if/else statements
 
in the code.
 
  
== VDraw and the GUI framework ==
+
El joc de l'X-Moto conté una estructura ''GUI'' i una llibreria 2D (VDraw) encastada al amunt de l'opengl. Aquests proveeixen una mica d'abstracció sobre el dibuix. Drawlib es la principal abstracció des de l'opengl i ambdues aplicacions de l'X-Moto, l'editor i el joc estenen aquesta drawlib. No estic segur per que s'utilitza l'herència però fa més difícil poder engegar/des-engegar DrawLib.  
[[Image:Classvapp_app_inherit_graph.png|frame|Vapp Inheritance diagram]]
 
  
The xmoto game contains a GUI framework and a 2d drawing library (VDraw) built on top op opengl. They provide
+
L'estructura de l'GUI també utilitza DrawLib per la majoria de les funcions. Actualment no totes les funcions de dibuix les proveeix DrawLib i el dibuix es fa a moltes parts de l'aplicació.
some abstraction of the drawing. Drawlib is the main abstraction from opengl and both the xmoto applications being the editor and the game extends this drawlib. I am not sure why inheritance is used but it makes ik hard to make the DrawLib pluggable
 
  
The GUI framework also use the DrawLib for most functions. Currently not all the drawing functions are provided in the DrawLib
+
'''Si volem proveir de menys implementació de l'OpenGL al joc, algunes parts del joc especifiques de l'OpenGl s'haurien de convertir a DrawLib o excloure-les amb definicions USE_OPENGL'''.
an drawing is done in many parts of the application.
 
  
'''If we want to be able to provide an OpenGL less implementation of the game the OpenGL specific parts of the game need to be moved to the DrawLib or excluded with USE_OPENGL defines'''.
+
La bona noticia es que DrawLib i l'estructura de l'GUI proveeixen suficient abstracció per a que sigui possible reemplaçar les funcions de l'OpenGL amb unes diferents de DrawLib. Aixi que si no volem canviar tot el codi de l'GUI, necessitem arreglar el problema. Actualment hem optat per reemplaçar totes les funcions d'OpenGl amb unes similars de DrawLib.
  
The good thing is that the DrawLib and the GUI framework provide enough abstraction so that it is possible to replace the OpenGL calls with different calls to the DrawLib. So if we don't want to throw away all the GUI code we need to solve the problem. currently we have chosen to replace opengl call with similar call to the drawlib
+
Exemple de codi utilitzant OpenGL
 
 
Sample of old code using opengl
 
 
<pre>
 
<pre>
 
   /**
 
   /**
Line 49: Line 42:
 
   }
 
   }
 
</pre>
 
</pre>
After adding a few functions to the DrawLib this code now looks like this.
+
Despres d'afegir unes quantes funcions de DrawLib en aquet codi, quedaria aixi.
 
<pre>
 
<pre>
  
Line 66: Line 59:
 
</pre>
 
</pre>
  
== Project short term goals ==
+
== Objectius a curt termini del projecte ==
*xmoto_hack on the Nokia 770 (16bpp/800x480) to learn what the problems are
+
*xmoto_hack en el Nokia 770 (16bpp/800x480) per veure quins problemes hi ha
*give information about the performance , lessons learned
+
*donar informació sobre el rendiment , lliçons enteses
*document new code
+
*documentar el nou codi
*find people to port to different platform
+
*trobar gent per passar-ho a plataformes diferents
  
 
== TODO ==
 
== TODO ==
*When xmoto is starting it loads all the levels, this is not nececary and should not happen.
+
*Quan s'inicia l'X-Moto comença per carregar tots els nivells, aixó no es necessari i no hauria de passar.
 +
 
 +
== Noticies ==
 +
[[User:Keesj|Keesj]] 14:53, 22 December 2006 (CET)
 +
 
 +
Actualment es possible seleccionar el motor interpret com a opció d'inici. Aixó es una mica  ''màgic'' perquè quant esta funcionant així, algunes funciones de l'opengl i de l'api estan en execució,  sembla ser que això no causa que el joc tingui una fallida. Estic molt content amb l'actual interpret de la petita pantalla. Espero que el funcionament continuï correctament.
 +
 
 +
 
 +
[[User:Keesj|Keesj]] 09:50, 21 December 2006 (CET)
 +
 
 +
Aquesta setmana hem fer uns quants progressos i gaire be hem tornat.
 +
Hem re-iniciat el projecte. Aquest cop hem utilitzat el cvs de l'xmoto i hem començat per tornar a fer el codi actual assegurant-nos que la versió d'OpenGL continui funcionant.
 +
Aixó va anar be. Ara podem compilar la versió d'opengl i la d'SDL_gfx fent servir el mateix codi.
 +
Esperem que sigui possible seleccionar el motor d'intèrpret durant l'execució.
 +
 
 +
 
 +
[[User:Keesj|Keesj]] 09:50, 19 December 2006 (CET)
 +
 
 +
El nostre patch de SDL_gfx ha sigut acceptat i la versió SDL_gfx 2.0.14 ara conté el mètode texturedPolygon requerit pel joc per a dibuixar polígons amb textures d'una forma bonica
 +
http://www.ferzkopp.net/joomla/content/view/19/14/.
 +
 
 +
 
 +
[[User:Keesj|Keesj]] 14:07, 17 December 2006 (CET)
 +
 
 +
Ahir es va crear una branca per permetre la contribució del codi, la branca del cvs es diu SDL_GFX_INCLUSION.
 +
 
 +
== Progress del projecte ==
 +
 
 +
{|
 +
|-valign="top"
 +
|[[Image:Xmoto_n770_2006_11_18.jpg|thumb|18 11 2006. execució real des de un Nokia 770]]
 +
|[[Image:Xmoto_profiling_2006_22_11.png|thumb|22 11 2006 execució del profiler amb l'xmoto(en un PC)]]
 +
|[[Image:Xmoto_with_hacked_gfx_2006_12_05.png|thumb|05 12 2006. les textures comencen a aparèixer (en un PC)]]
 +
|[[Image:Xmoto_n770_hack_2006_12_10.jpg|thumb|10 12 2006. Fent algun progrés,el fons negre es veu millor i el dibuix del text es mes ràpid]]
  
== Project progress ==
+
|-valign="top"
 +
|[[Image:Xmoto_sdl_gfx_2006_14_12.png|thumb|14 12 2006. Ara els arbres també s'interpretan]]
 +
|[[Image:Xmoto_sdlgfx_title_screen_22_12_2006.png|thumb|22 12 2006 pantalla de titol de l'Xmoto amb SDL_gfx, quasi perfecte !!!]]
 +
|[[Image:Xmoto_sdlgfx_game_22_12_2006.png|thumb|22 12 2006 La moto no s'interpreta gaire be, pero fixa't en el bonic fons]]
 +
|[[Image:Xmoto_sdlgfx_end_game_22_12_2006.png|thumb|22 12 2006 pantalla de pausa amb ''alpha blending'']]
  
[[Image:Xmoto_n770_2006_11_18.jpg|thumb|18 11 2006. running on a real Nokia 770]]
+
|-valign="top"
[[Image:Xmoto_profiling_2006_22_11.png|thumb|22 11 2006 running the profiler with xmoto(on PC)]]
+
|[[Image:Xmoto_sdl_gfx_in_game_2006_24_12.png|thumb|24 12 2006 Difícil saber si es la versió l'opengl o la del sdl:)]]
[[Image:Xmoto_with_hacked_gfx_2006_12_05.png|thumb|05 12 2006. texture are starting to appear (on PC)]]
+
|[[Image:Xmoto_sdl_gfx_not_that_difficult_right_2006_24_12.png|thumb|24 12 2006 SDL_gfx, no tant difícil, oi?]]
[[Image:Xmoto_n770_hack_2006_12_10.jpg|thumb|10 12 2006. Making some progress,the black backgound look better and text drawing is faster]]
+
|[[Image:Xmoto_0.2.5_test_sdlgfx_n770_level1.jpg|thumb|28 12 2006 xmoto 0.2.5-test executant-se en n770 (level 1) freqüència de fotogrames lenta ]]
 +
|[[Image:Xmoto_0.2.5_test_sdlgfx_n770.jpg|thumb|28 12 2006 xmoto 0.2.5-test executant-se en n770 (Pantalla de titol)]]
 +
|}

Latest revision as of 11:24, 26 November 2010

English - Español

Anàlisis de l'SDL_gfx

L'OpenGL es el motor interpret de gràfics de l'X-Moto. Proveeix un aspecte bonic al joc. El problema que hi ha amb l'OpenGL es que requereix de hardware i software especial. Per tant, nosaltres actualment estem escrivint un segon front-end gràfic al X-Moto utilitzant la llibreria de l'SDL_gfx[1]

Esperem que el front-end de l'SDL_gfx sigui una bona alternativa per l'OpenGL però no un reemplaç. En un mon idíl·lic ens agradaria que es pogués canviar entre tots dos motors durant l'execució.

Actuals motors intèrprets

xmoto amb opengl normal
xmoto amb opengl lleix

Hi ha dos tipus d'intèrprets, un normal i un altre lleix. Tots dos estan basats en l'opengl, que requereix un bon hardware d'opengl en funcionament per que el software de l'opengl encara no es prou ràpid per una bona jugavilitat. Pensem que el front-end de l'interpret SDL_gfx es veuria millor que el tipus d'intèrpret lleix del motor OpenGl. Els dos tipus d'intèrprets actuals es poden intercanviar durant l'execució i s'aplocan utilitzant declaracions de if/else en el codi.

El VDraw i l'estructura de l'Interfície gràfica d'usuari (GUI)

Vapp diagrama d'herències

El joc de l'X-Moto conté una estructura GUI i una llibreria 2D (VDraw) encastada al amunt de l'opengl. Aquests proveeixen una mica d'abstracció sobre el dibuix. Drawlib es la principal abstracció des de l'opengl i ambdues aplicacions de l'X-Moto, l'editor i el joc estenen aquesta drawlib. No estic segur per que s'utilitza l'herència però fa més difícil poder engegar/des-engegar DrawLib.

L'estructura de l'GUI també utilitza DrawLib per la majoria de les funcions. Actualment no totes les funcions de dibuix les proveeix DrawLib i el dibuix es fa a moltes parts de l'aplicació.

Si volem proveir de menys implementació de l'OpenGL al joc, algunes parts del joc especifiques de l'OpenGl s'haurien de convertir a DrawLib o excloure-les amb definicions USE_OPENGL.

La bona noticia es que DrawLib i l'estructura de l'GUI proveeixen suficient abstracció per a que sigui possible reemplaçar les funcions de l'OpenGL amb unes diferents de DrawLib. Aixi que si no volem canviar tot el codi de l'GUI, necessitem arreglar el problema. Actualment hem optat per reemplaçar totes les funcions d'OpenGl amb unes similars de DrawLib.

Exemple de codi utilitzant OpenGL

  /**
   *old opengl mode
   **/
  void GameRenderer::_RenderCircle(int nSteps,Color CircleColor,const Vector2f &C,float fRadius) {
    glBegin(GL_LINE_LOOP);
    glColor3ub(GET_RED(CircleColor),GET_GREEN(CircleColor),GET_BLUE(CircleColor));
    for(int i=0;i<nSteps;i++) {
      float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;
      _Vertex( Vector2f(C.x + fRadius*sin(r),C.y + fRadius*cos(r)) );
    }
    glEnd();
  }

Despres d'afegir unes quantes funcions de DrawLib en aquet codi, quedaria aixi.


  /**
   * new abstracted code
   **/
  void GameRenderer::_RenderCircle(int nSteps,Color CircleColor,const Vector2f &C,float fRadius) {
    getParent()->startDraw(DRAW_MODE_LINE_LOOP);
    getParent()->setColor(GET_RED(CircleColor),GET_GREEN(CircleColor),GET_BLUE(CircleColor),255);
    for(int i=0;i<nSteps;i++) {
      float r = (3.14159f * 2.0f * (float)i)/ (float)nSteps;
      getParent()->glVertex( Vector2f(C.x + fRadius*sin(r),C.y + fRadius*cos(r)) );
    }
    getParent()->endDraw();
  }

Objectius a curt termini del projecte

  • xmoto_hack en el Nokia 770 (16bpp/800x480) per veure quins problemes hi ha
  • donar informació sobre el rendiment , lliçons enteses
  • documentar el nou codi
  • trobar gent per passar-ho a plataformes diferents

TODO

  • Quan s'inicia l'X-Moto comença per carregar tots els nivells, aixó no es necessari i no hauria de passar.

Noticies

Keesj 14:53, 22 December 2006 (CET)

Actualment es possible seleccionar el motor interpret com a opció d'inici. Aixó es una mica màgic perquè quant esta funcionant així, algunes funciones de l'opengl i de l'api estan en execució, sembla ser que això no causa que el joc tingui una fallida. Estic molt content amb l'actual interpret de la petita pantalla. Espero que el funcionament continuï correctament.


Keesj 09:50, 21 December 2006 (CET)

Aquesta setmana hem fer uns quants progressos i gaire be hem tornat. Hem re-iniciat el projecte. Aquest cop hem utilitzat el cvs de l'xmoto i hem començat per tornar a fer el codi actual assegurant-nos que la versió d'OpenGL continui funcionant. Aixó va anar be. Ara podem compilar la versió d'opengl i la d'SDL_gfx fent servir el mateix codi. Esperem que sigui possible seleccionar el motor d'intèrpret durant l'execució.


Keesj 09:50, 19 December 2006 (CET)

El nostre patch de SDL_gfx ha sigut acceptat i la versió SDL_gfx 2.0.14 ara conté el mètode texturedPolygon requerit pel joc per a dibuixar polígons amb textures d'una forma bonica http://www.ferzkopp.net/joomla/content/view/19/14/.


Keesj 14:07, 17 December 2006 (CET)

Ahir es va crear una branca per permetre la contribució del codi, la branca del cvs es diu SDL_GFX_INCLUSION.

Progress del projecte

18 11 2006. execució real des de un Nokia 770
22 11 2006 execució del profiler amb l'xmoto(en un PC)
05 12 2006. les textures comencen a aparèixer (en un PC)
10 12 2006. Fent algun progrés,el fons negre es veu millor i el dibuix del text es mes ràpid
14 12 2006. Ara els arbres també s'interpretan
22 12 2006 pantalla de titol de l'Xmoto amb SDL_gfx, quasi perfecte !!!
22 12 2006 La moto no s'interpreta gaire be, pero fixa't en el bonic fons
22 12 2006 pantalla de pausa amb alpha blending
24 12 2006 Difícil saber si es la versió l'opengl o la del sdl:)
24 12 2006 SDL_gfx, no tant difícil, oi?
28 12 2006 xmoto 0.2.5-test executant-se en n770 (level 1) freqüència de fotogrames lenta
28 12 2006 xmoto 0.2.5-test executant-se en n770 (Pantalla de titol)