当前位置: 首页 > Linux

Pascal游戏开发入门(二):渲染图片

时间:2023-04-06 11:47:43 Linux

Pascal游戏开发入门(二):渲染图片渲染静态图片添加一个Texture,然后Render出来创建一个Texture,获取sizeprocedureTGame.Init(title:string;x,y,h,w,flags:integer);begin.....pt:=IMG_LoadTexture(pr,'assets/run.png');SDL_QueryTexture(pt,nil,nil,@srcRect.w,@srcRect.h);destRect.x:=srcRect.x;destRect.y:=srcRect.y;destRect.w:=srcRect.w;destRect.h:=srcRect.h;......结尾;渲染程序TGame.Render();beginSDL_SetRenderDrawColor(pr,238,238,238,255);SDL_RenderClear(pr);SDL_RenderCopy(pr,pt,@srcRect,@destRect);SDL_RenderPresent(pr);结束;渲染动画和快速渲染动画交替渲染多张图片procedureTGame.Update();beginsrcRect.x:=96*(round(SDL_GetTicks()/100)mod8);end;动画反转本例中,如果角色需要反方向行走,则无需再制作一组材质SDL_RenderCopyEx(pr,pt,@srcRect,@destRect,0,nil,SDL_FLIP_HORIZONTAL);代码整理代码有多个纹理,所以不能简单地使用变量。让纹理容器渲染矩形和纹理渲染以防止混淆。增加一个TextureManager,统一管理Texture,解决以上两个问题。typeTTextureDict=specializeTFPGMap;TTextureManager=cl屁股私有纹理贴图:TTextureDict;公共析构函数Destroy();函数加载(文件名:字符串;ID:字符串;pr:PSDL_Renderer):布尔值;程序绘制(id:字符串;x、y、w、h:整数;pr:PSDL_Renderer;翻转:整数=0);程序DrawFrame(id:字符串;x、y、w、h、行、帧:整数;pr:PSDL_Renderer;翻转:整数=0);结尾;由于多个TextureManager不合适所以改为单例模式privateconstructorInit;公共类函数实例:TTextureManager;完整代码见[https://gitee.com/tom-cat/sdl...]