1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- program demo12;
- {$I zglCustomConfig.cfg}
- {$I zgl_config.cfg}
- {$R *.res}
- uses
- zgl_screen,
- zgl_window,
- zgl_timers,
- zgl_keyboard,
- zgl_render_2d,
- zgl_fx,
- zgl_textures,
- zgl_textures_png,
- zgl_render_target,
- zgl_sprite_2d,
- zgl_font,
- zgl_text,
- zgl_math_2d,
- zgl_types,
- zgl_utils
- ;
- var
- dirRes : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};
- fntMain : LongWord;
- texTux : zglPTexture;
- rtFull : zglPRenderTarget;
- rtDefault: zglPRenderTarget;
- procedure Init;
- begin
- 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);
- setFontTextScale(15, fntMain);
- 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);
- wnd_SetCaption(utf8_Copy('12 - Render into Texture'));
- zgl_Init();
- End.
|