Pascal游戏开发入门(二):渲染图片
Pascal游戏开发入门(二):渲染图片
渲染静态图片
新增一个Texture,然后Render出来
创建Texture,并获取尺寸
procedure TGame.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;......
end;
渲染出来
procedure TGame.Render();
beginSDL_SetRenderDrawColor(pr, 238, 238, 238, 255);SDL_RenderClear(pr);SDL_RenderCopy(pr, pt, @srcRect, @destRect);SDL_RenderPresent(pr);
end;
渲染动画
渲染动画就就快速交替渲染多张图片
procedure TGame.Update();
beginsrcRect.x := 96 * (round(SDL_GetTicks() / 100) mod 8);
end;
动画反转
本例中,如果人物需要朝相反方向行走,不用再搞一套素材
SDL_RenderCopyEx(pr, pt, @srcRect, @destRect,0, nil, SDL_FLIP_HORIZONTAL);
代码整理
代码味道
- Texture有多个,不能简单的使用变量。要有一个Texture容器
- 渲染时的Rect要和Texture的Render在一起防止错乱
新增一个TextureManager来统一的管理Texture,并解决以上两个问题
typeTTextureDict = specialize TFPGMap<string, PSDL_Texture>;TTextureManager = classprivatetextureMap: TTextureDict;publicdestructor Destroy();function Load(filename: string; id: string; pr: PSDL_Renderer): boolean;procedure Draw(id: string; x, y, w, h: integer; pr: PSDL_Renderer;flip: integer = 0);procedure DrawFrame(id: string; x, y, w, h, row, frame: integer;pr: PSDL_Renderer; flip: integer = 0);end;
由于多个TextureManager是不合适的 所以改为单例模式
private
constructor Init;
publicclass function Instance: TTextureManager;
完整代码见 https://gitee.com/tom-cat/sdl-hello/tree/v2.0/
Pascal游戏开发入门(二):渲染图片相关推荐
- java游戏开发入门(二) - 菜单
java游戏开发入门(二) - 菜单 前言 编码 主菜单 游戏内菜单(按下ESC后出现,并会暂停游戏) 效果展示 主菜单 游戏内菜单 完整代码 完整项目 前言 上一章我们创建了一个600x600的 ...
- Pascal游戏开发入门(三):游戏对象管理
Pascal游戏开发入门(三):游戏对象管理 游戏中有很多类对象,例如:角色,敌人,NPC,陷阱,子弹,门等等.跟踪并处理它们之间的交互是一个有难度的事情.为了尽可能简化并使之容易维护,本节将尝试使用 ...
- 游戏开发入门 二、游戏中的设计模式
笔记与总结: 1.有必要深刻的认识到设计模式的意义 游戏开发是一个软件工程,他的特点是需求极易变化.对于任何一个软件工程,我们要从代码的组织方式上来提高其可读性(别人也很容易理解),安 ...
- 微信小游戏开发入门(二)-用CocosCreator官方Demo生成微信小游戏
微信已经放出小游戏的开发工具包,虽然功能尚未完善,但已经可以开发调试了.我们使用CocosCreator官方的polished_project例子来讲解如何生成微信小游戏. 1.下载polished_ ...
- 游戏开发入门(二)游戏开发概述
这篇文章主要以问题的形式给大家解答下面几个问题: 1.游戏是如何开发出来的,开发流程大概是什么样子的? 2.游戏相关的职位都有哪些? 3.开发游戏需要哪些技术或能力? 4.程序员一般负责的内容有哪些? ...
- 游戏开发入门(二)游戏中的设计模式
视频链接:游戏开发入门(二)游戏中的设计模式(3节课 时常:约2小时40分钟) 该视频主要围绕游戏中常见的设计模式展开讲解并实践,需要大家多多实践与理解 笔记与总结(请先学习视频内容): 1.有必要深 ...
- 游戏开发入门(十二)游戏开发全总结
通过游戏开发入门系列的学习,是不是对游戏开发有了一个比较清晰的认识? 在最后一篇里面,博主试着概括性的对游戏开发做一个总结,欢迎各位提出意见来完善这篇博客~ 游戏模块总结: 游戏逻辑模块系统:各种武器 ...
- 游戏开发入门(五)游戏动画系统
视频链接:游戏开发入门(五)游戏动画系统(8节课 时常:约2小时30分钟) PPT比视频要块一些 第二节与PPT对不上 视频中杂音太大,如果带耳机还听不清的话,建议直接看内容即可 笔记与总结(请先学习 ...
- 【Visual C++】游戏开发笔记二十三 游戏基础物理建模 五 粒子系统模拟 二
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...
最新文章
- Android-应用性能测试
- 第一阶段:Java基础之OOP
- mfc exe 在繁体系统 乱码_MC32/MC92 自带TelnetCE界面部分字符乱码解决方案
- xamarin.android 控件,Android 库控件 - Xamarin | Microsoft Docs
- java 并发锁_Java并发教程–锁定:内在锁
- leetcode 删除链表中的节点
- 常用linux terminal 命令
- 云小课|网络好不好,ping一下就知道
- php 远程图片大小,PHP下载远程图片并保存到本地方法总结
- linux 切换pip路径_windows环境下面如何快速配置pip环境变量
- 次世代的会话管理项目 Spring Session
- java sax解析器_Java SAX解析器示例
- [转]C++日志系统log4cxx使用总结
- ./configure: error: the HTTP rewrite module requires the PCRE library.
- uva11549Calculator Conundrum
- stm32矩阵键盘c语言程序,stm32矩阵键盘原理图及程序介绍
- RTF转HTML(<div>标签)格式的方法(java)
- 互联网晚报 | 1月4日 星期二 | 中国移动1月5日在上交所上市;元旦档总票房破10亿;特斯拉连续6个季度交付量创纪录...
- 微信小程序商城源码学习
- EPLAN 接线端子