Difference between revisions of "ZenGL Tutorial/es"

From Free Pascal wiki
Jump to navigationJump to search
(New page: {{ZenGL Tutorial}} {{ZenGL Tutorial Index/es}} == Descarga == Puedes obtener ZenGL para Linux, Windows y Mac. [http://zengl.org/download.html Descargar ZenGL]. == Instalacion == D...)
 
m (typo)
Line 9: Line 9:
 
== Instalacion ==
 
== Instalacion ==
  
Descomprimi el archivo descargado con un gestor de archivos comprimidos, como 7-Zip en la carpeta que desees.
+
Descomprimir el archivo descargado con un gestor de archivos comprimidos como 7-Zip en la carpeta que desees.
  
 
=== Ruta de las Fuentes ===
 
=== Ruta de las Fuentes ===
Line 30: Line 30:
 
Las aplicaciones pueden ser compiladas con ZenGL estáticamente o usando so/dll/dylib.
 
Las aplicaciones pueden ser compiladas con ZenGL estáticamente o usando so/dll/dylib.
  
Lee mas acerca de [http://zengl.org/wiki/doku.php?id=compilation compilación] en la [http://zengl.org/wiki/ Wiki de ZenGL].
+
Lee mas acerca de la [http://zengl.org/wiki/doku.php?id=compilation compilación] en la [http://zengl.org/wiki/ Wiki de ZenGL].
  
 
=== ZenGL estaticamente===
 
=== ZenGL estaticamente===
  
La ventaja de la compilación estática es que genera un tamaño menor de la aplicación, pero requiere incluir todas las unidades.
+
La ventaja de la compilación estática es que genera una aplicación de menor tamaño, pero requiere incluir todas las unidades.
  
Además la compilación estática requiere seguir los términos de la licencia-[[LGPL]], particularmente debes hacer de código abierto tu aplicación si usa código fuente de ZenGL.
+
Además la compilación estática requiere seguir los términos de la licencia-[[LGPL]], particularmente debes hacer de código abierto (''open source'') tu aplicación si usa código fuente de ZenGL.
  
 
<delphi>{$DEFINE STATIC}</delphi>
 
<delphi>{$DEFINE STATIC}</delphi>
Line 42: Line 42:
 
=== ZenGL usando so/dll/dylib ===
 
=== ZenGL usando so/dll/dylib ===
  
Usando so/dll/dylib no requiere hacer de código abierto tu aplicación. Para esto comenta el ''$DEFINE STATIC''. También necesitas compilar la librería ZenGL.
+
Usando so/dll/dylib no requiere hacer de código abierto tu aplicación. Para hacer esto comenta el ''$DEFINE STATIC''. También necesitarás compilar la librería ZenGL.
  
 
<delphi>//{$DEFINE STATIC}</delphi>
 
<delphi>//{$DEFINE STATIC}</delphi>
Line 48: Line 48:
 
==== Windows dll ====
 
==== Windows dll ====
  
Abire "''src\Lazarus\ZenGL.lpi''" y luego ve a "''Ejecutar > Compilar (Ctrl + F9)''".
+
Abre "''src\Lazarus\ZenGL.lpi''" y luego ve a "''Ejecutar > Compilar (Ctrl + F9)''".
  
 
Luego en el directorio "''src\''" puedes ver el archivo "''ZenGL.dll''", copia y pegalo en la carpeta "''bin\i386''" donde todos los binarios de los demos son compilados. Siempre debes copiar las librerías en el directorio de salida de tu aplicación si usas dll.
 
Luego en el directorio "''src\''" puedes ver el archivo "''ZenGL.dll''", copia y pegalo en la carpeta "''bin\i386''" donde todos los binarios de los demos son compilados. Siempre debes copiar las librerías en el directorio de salida de tu aplicación si usas dll.
Line 60: Line 60:
 
Este es el primer programa demo incluido con ZenGL, primero crea un nuevo "Programa Pascal". Agrega las rutas al código fuente como fue descrito anteriormente.
 
Este es el primer programa demo incluido con ZenGL, primero crea un nuevo "Programa Pascal". Agrega las rutas al código fuente como fue descrito anteriormente.
  
También debes cambiar el modo de sintáxis en ''Proyecto > Opciones del Proyecto > Opciones del Compilador > Parsing'' a ''Delphi (-Mdelphi)''.
+
También debes cambiar el modo de sintáxis en ''Proyecto > Opciones del Proyecto > Opciones del Compilador > Procesando'' a ''Delphi (-Mdelphi)''.
  
 
Recuerda, si estás usando so/dll/dylib copia los binarios de las librerías al directorio de salida de tu programa.
 
Recuerda, si estás usando so/dll/dylib copia los binarios de las librerías al directorio de salida de tu programa.
Line 94: Line 94:
 
<delphi>procedure Init;
 
<delphi>procedure Init;
 
begin
 
begin
   // Here can be loading of main resources.
+
   // Aquí se puede realizar la carga de los recursos principales.
 
end;
 
end;
  
 
procedure Draw;
 
procedure Draw;
 
begin
 
begin
   // Here "draw" anything.
+
   // Aquí dibuja cualquier cosa.
 
end;
 
end;
  
 
procedure Update( dt : Double );
 
procedure Update( dt : Double );
 
begin
 
begin
   // This function is the best way to implement smooth moving of something, because timers are restricted by FPS.
+
   // Esta función es la mejor manera para implementar movimiento suavizado de algo, porque los temporizadores son restringidos por FPS.
 
end;
 
end;
  
 
procedure Timer;
 
procedure Timer;
 
begin
 
begin
   // Caption will show the frames per second.
+
   // El título mostrará los cuadros por segundo.
 
   wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
 
   wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );
 
end;
 
end;
Line 127: Line 127:
 
   DirApp  := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
 
   DirApp  := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
 
   DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
 
   DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
 
+
 
   // Create a timer with interval 1000ms.
+
   //Crea un temporizador con un intervalo de 1000ms.
 
   timer_Add( @Timer, 1000 );
 
   timer_Add( @Timer, 1000 );
  
Line 144: Line 144:
 
   zgl_Enable( APP_USE_UTF8 );
 
   zgl_Enable( APP_USE_UTF8 );
  
   // Set the caption of the window.
+
   // Establece el título de la ventana.
 
   wnd_SetCaption( '01 - Initialization' );
 
   wnd_SetCaption( '01 - Initialization' );
  
   // Allow to show the mouse cursor.
+
   // Permite mostrar el cursor.
 
   wnd_ShowCursor( TRUE );
 
   wnd_ShowCursor( TRUE );
  
   // Set screen options.
+
   // Establece opciones de pantalla.
 
   scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
 
   scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
  
   // Initialize ZenGL.
+
   // Iniciar ZenGL.
 
   zgl_Init();
 
   zgl_Init();
 
End.</delphi>   
 
End.</delphi>   

Revision as of 19:12, 30 May 2011

Deutsch (de) English (en) español (es) français (fr) русский (ru)


ZenGL/es | Tutorial 1 | Tutorial 2 | Tutorial 3 | Edit

Descarga

Puedes obtener ZenGL para Linux, Windows y Mac. Descargar ZenGL.

Instalacion

Descomprimir el archivo descargado con un gestor de archivos comprimidos como 7-Zip en la carpeta que desees.

Ruta de las Fuentes

Antes de usar los modulos no olvides establecer la ruta a las fuentes de ZenGL.

Ve a "Proyecto > Opciones del Proyecto". En "Opciones del compilador > Rutas" debes añadir lo siguiente en "Otros archivos de unidad":

<delphi>headers extra src src\Direct3D lib\jpeg\$(TargetCPU)-$(TargetOS) lib\msvcrt\$(TargetCPU) lib\ogg\$(TargetCPU)-$(TargetOS) lib\zlib\$(TargetCPU)-$(TargetOS)</delphi>

Compilacion

Las aplicaciones pueden ser compiladas con ZenGL estáticamente o usando so/dll/dylib.

Lee mas acerca de la compilación en la Wiki de ZenGL.

ZenGL estaticamente

La ventaja de la compilación estática es que genera una aplicación de menor tamaño, pero requiere incluir todas las unidades.

Además la compilación estática requiere seguir los términos de la licencia-LGPL, particularmente debes hacer de código abierto (open source) tu aplicación si usa código fuente de ZenGL.

<delphi>{$DEFINE STATIC}</delphi>

ZenGL usando so/dll/dylib

Usando so/dll/dylib no requiere hacer de código abierto tu aplicación. Para hacer esto comenta el $DEFINE STATIC. También necesitarás compilar la librería ZenGL.

<delphi>//{$DEFINE STATIC}</delphi>

Windows dll

Abre "src\Lazarus\ZenGL.lpi" y luego ve a "Ejecutar > Compilar (Ctrl + F9)".

Luego en el directorio "src\" puedes ver el archivo "ZenGL.dll", copia y pegalo en la carpeta "bin\i386" donde todos los binarios de los demos son compilados. Siempre debes copiar las librerías en el directorio de salida de tu aplicación si usas dll.

Ahora puedes compilar los demos comentando $DEFINE STATIC.

Otros archivos dll en la carpeta "bin\" que puedes usar son: chipmunk.dll ; libogg-0.dll ; libvorbis-0.dll ; libvorbis-3.dll

Primer programa

Este es el primer programa demo incluido con ZenGL, primero crea un nuevo "Programa Pascal". Agrega las rutas al código fuente como fue descrito anteriormente.

También debes cambiar el modo de sintáxis en Proyecto > Opciones del Proyecto > Opciones del Compilador > Procesando a Delphi (-Mdelphi).

Recuerda, si estás usando so/dll/dylib copia los binarios de las librerías al directorio de salida de tu programa.

Título del programa, agregar recursos: <delphi>program demo01;

{$R *.res}</delphi>

Define el modo de compilación (comentalo para usar so/dll/dylib): <delphi>{$DEFINE STATIC}</delphi>

Agrega las unidades de ZenGL. <delphi>uses

 {$IFNDEF STATIC}
 zglHeader
 {$ELSE}
 zgl_main,
 zgl_screen,
 zgl_window,
 zgl_timers,
 zgl_utils
 {$ENDIF}
 ;</delphi>

Variables como en un programa estándar de pascal: <delphi> var

 DirApp  : String;
 DirHome : String;</delphi>

Procedimientos para agregar código: <delphi>procedure Init; begin

 // Aquí se puede realizar la carga de los recursos principales.

end;

procedure Draw; begin

 // Aquí dibuja cualquier cosa.

end;

procedure Update( dt : Double ); begin

 // Esta función es la mejor manera para implementar movimiento suavizado de algo, porque los temporizadores son restringidos por FPS.

end;

procedure Timer; begin

 // El título mostrará los cuadros por segundo.
 wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );

end;

procedure Quit; begin

//

end;</delphi>

Aquí comienza el programa: <delphi>Begin

 {$IFNDEF STATIC}
 zglLoad( libZenGL );
 {$ENDIF}
 // For loading/creating your own options/profiles/etc. you can get path to user home
 // directory, or to executable file(not works for GNU/Linux).
 DirApp  := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
 DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
  
 //Crea un temporizador con un intervalo de 1000ms.
 timer_Add( @Timer, 1000 );
 // Register the procedure, that will be executed after ZenGL initialization.
 zgl_Reg( SYS_LOAD, @Init );
 // Register the render procedure.
 zgl_Reg( SYS_DRAW, @Draw );
 // Register the procedure, that will get delta time between the frames.
 zgl_Reg( SYS_UPDATE, @Update );
 // Register the procedure, that will be executed after ZenGL shutdown.
 zgl_Reg( SYS_EXIT, @Quit );
 
 // Enable using of UTF-8, because this unit saved in UTF-8 encoding and here used
 // string variables.
 zgl_Enable( APP_USE_UTF8 );
 // Establece el título de la ventana.
 wnd_SetCaption( '01 - Initialization' );
 // Permite mostrar el cursor.
 wnd_ShowCursor( TRUE );
 // Establece opciones de pantalla.
 scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
 // Iniciar ZenGL.
 zgl_Init();

End.</delphi>

Codigo Resultante

El resultado es una plantilla para los proyectos de ZenGL: <delphi>program template;

{$DEFINE STATIC}

{$R *.res}

uses

 {$IFNDEF STATIC}
 zglHeader
 {$ELSE}
 zgl_main,
 zgl_screen,
 zgl_window,
 zgl_timers,
 zgl_utils
 {$ENDIF}
 ;

var

 DirApp  : String; DirHome : String;

procedure Init; begin end;

procedure Draw; begin end;

procedure Update( dt : Double ); begin end;

procedure Timer; begin

 wnd_SetCaption( '01 - Initialization[ FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) + ' ]' );

end;

procedure Quit; begin end;

Begin

 {$IFNDEF STATIC}
 zglLoad( libZenGL );
 {$ENDIF}
 DirApp  := u_CopyStr( PChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
 DirHome := u_CopyStr( PChar( zgl_Get( DIRECTORY_HOME ) ) );
 timer_Add( @Timer, 1000 );
 zgl_Reg( SYS_LOAD, @Init );
 zgl_Reg( SYS_DRAW, @Draw );
 zgl_Reg( SYS_UPDATE, @Update );
 zgl_Reg( SYS_EXIT, @Quit );
 zgl_Enable( APP_USE_UTF8 );
 wnd_SetCaption( '01 - Initialization' );
 wnd_ShowCursor( TRUE );
 scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE );
 zgl_Init();

End.</delphi>