1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- program demo12;
- {$I zglCustomConfig.cfg}
- uses
- zgl_main,
- zgl_screen,
- zgl_window,
- zgl_timers,
- zgl_render_2d,
- zgl_fx,
- zgl_textures,
- zgl_textures_png,
- zgl_render_target,
- zgl_sprite_2d,
- zgl_font,
- zgl_text,
- zgl_math_2d,
- zgl_utils
- ;
- var
- dirRes : UTF8String = 'data/';
- fntMain : zglPFont;
- texTux : zglPTexture;
- rtFull : zglPRenderTarget;
- rtDefault : zglPRenderTarget;
- procedure Init;
- begin
- zgl_Enable( CORRECT_RESOLUTION );
- scr_CorrectResolution( 800, 600 );
- texTux := tex_LoadFromFile( dirRes + 'tux_stand.png' );
- tex_SetFrameSize( texTux, 64, 64 );
- fntMain := font_LoadFromFile( dirRes + 'font.zfi' );
- // RU: Создаем RenderTarget и "цепляем" пустую текстуру. В процессе текстуру можно сменить присвоив rtarget.Surface другую zglPTexture, главное что бы совпадали размеры с теми, что указаны в
- // tex_CreateZero. Таргету также указан флаг RT_FULL_SCREEN, отвечающий за то, что бы в текстуру помещалось все содержимое экрана а не область 256x256(как с флагом RT_DEFAULT).
- // EN: Create a RenderTarget and "bind" empty texture to it. Later texture can be changed via changing rtarget.Surface to another zglPTexture, the only requirement - the same size, that was
- // set in tex_CreateZero. Also target use flag RT_FULL_SCREEN that responsible for rendering whole content of screen into target, not only region 256x256(like with flag RT_DEFAULT).
- rtFull := rtarget_Add( tex_CreateZero( 256, 256 ), RT_FULL_SCREEN );
- // RU: Для сравнения создадим ещё один RenderTarget с флагом RT_DEFAULT.
- // EN: Create one more RenderTarget with flag RT_DEFAULT for comparison.
- rtDefault := rtarget_Add( tex_CreateZero( 256, 256 ), RT_DEFAULT );
- end;
- procedure Draw;
- begin
- // RU: Устанавливаем текущий RenderTarget.
- // EN: Set current RenderTarget.
- rtarget_Set( rtFull );
- // RU: Рисуем в него.
- // EN: Render to it.
- asprite2d_Draw( texTux, random( 800 - 64 ), random( 600 - 64 ), 64, 64, 0, random( 9 ) + 1 );
- // RU: Возвращаемся к обычному рендеру.
- // EN: Return to default rendering.
- rtarget_Set( nil );
- rtarget_Set( rtDefault );
- asprite2d_Draw( texTux, random( 800 - 64 ), random( 600 - 64 ), 64, 64, 0, random( 9 ) + 1 );
- rtarget_Set( nil );
- // RU: Теперь рисуем содержимое RenderTarget'ов.
- // EN: Render content of RenderTargets.
- ssprite2d_Draw( rtFull.Surface, ( 400 - 256 ) / 2, ( 600 - 256 ) / 2, 256, 256, 0 );
- ssprite2d_Draw( rtDefault.Surface, ( 400 - 256 ) / 2 + 400, ( 600 - 256 ) / 2, 256, 256, 0 );
- text_Draw( fntMain, 0, 0, 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) );
- end;
- Begin
- randomize();
- zgl_Reg( SYS_LOAD, @Init );
- zgl_Reg( SYS_DRAW, @Draw );
- scr_SetOptions( 800, 600, REFRESH_MAXIMUM, TRUE, TRUE );
- zgl_Init();
- End.
|