Difference between revisions of "ZenGL Tutorial/es"
(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 == | ||
− | + | 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 | + | 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 | + | 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 ==== | ||
− | + | 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 > | + | 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 | ||
− | // | + | // Aquí se puede realizar la carga de los recursos principales. |
end; | end; | ||
procedure Draw; | procedure Draw; | ||
begin | begin | ||
− | // | + | // Aquí dibuja cualquier cosa. |
end; | end; | ||
procedure Update( dt : Double ); | procedure Update( dt : Double ); | ||
begin | begin | ||
− | // | + | // 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 | ||
− | // | + | // 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 ) ) ); | ||
− | + | ||
− | // | + | //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 ); | ||
− | // | + | // Establece el título de la ventana. |
wnd_SetCaption( '01 - Initialization' ); | wnd_SetCaption( '01 - Initialization' ); | ||
− | // | + | // Permite mostrar el cursor. |
wnd_ShowCursor( TRUE ); | wnd_ShowCursor( TRUE ); | ||
− | // | + | // Establece opciones de pantalla. |
scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | scr_SetOptions( 800, 600, REFRESH_MAXIMUM, FALSE, FALSE ); | ||
− | // | + | // 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>