社区
游戏开发
帖子详情
关于离屏的问题
winlyf
2008-07-17 10:58:07
请问下离屏技术具体方法步骤是什么?他有什么缺点?
我在网上查了下,没有比较详细的介绍。
...全文
220
11
打赏
收藏
关于离屏的问题
请问下离屏技术具体方法步骤是什么?他有什么缺点? 我在网上查了下,没有比较详细的介绍。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tp906
2008-08-08
打赏
举报
回复
都这么久了,不知道LZ还想不想要答案。
其实那个 离屏surface的叫法,只是某些人用来唬人的。原理很简单。看到pygame(python版的SDL)教程里面就有很生动的解释。
原文如下:
http://www.pygame.org/docs/tut/MoveIt.html
小弟献丑中文解释下:
2D游戏中角色的位置常用pos坐标表示,而地图就是全直角坐标。
这里用个数组进行简化,
实际中背景地图screen[x,y]全坐标简化成一维数组screen[0~5],而角色坐标pos所占的位置也就成了screen[pos]。
实际操作中首先画背景地图,这里是生成一个screen[0~5]的数组。比如是
screen = [1, 1, 2, 2, 2, 1] #其中1和2代表构成地图的不同图块 tiles
screenold=screen #保留一个副本
print screen
然后将角色画上,比如角色的tiles是8,我们把一个8画在screen[3]上。
screen[3] = 8
这时再print screen 得到是[1,1,2,8,2,1]。也就是说那个2现在被8占据了。
现在要让角色8移动一下。[1,1,2,2,8,1],我们希望被8占据的2要还原过来。要实现就要分两步。
先把screen[3] 改成2。实际的操作经常是保留原来的screen=[1,1,2,2,2,1],覆盖现在的.
screen=screenold
再把screen[4]改成8
screen[4]=8
这时就得到了新的screen, 即移动之后的[1,1,2,2,8,1]
基于以上原理。所谓的离屏的surface也就是这里保留的副本screenold。
图形引擎中把最终要显示在屏幕的surface一般叫做screen 。 游戏主体每循环一次也就是每一帧,显卡就读取screen中的内容并显示在屏幕上。
通常,要显示的东西都要先转化加工成surface。比如bitmap一张位图,实际是将所给的位图文件转成一个surface,其间还可以做些加工像透明色。
image_a = bitmap('xxx.bmp',……)
要显示的时候,就将image_a通过blit这种方式添加到screen中去,这样就可以显示在屏幕上了。
而所有的除screen之外的surface都是离屏surface。这也就是所谓的离屏技术。
小弟只熟悉SDL,DIREXT中是不是指定的screen不大清楚,但是原理是正确的。
另由于JPG格式是经过压缩的,想要生成surface就必须先对文件格式进行处理。你可以找到一些扩展API直接读取JPG生成表面,或者把资源换成位图格式的。
扬扬洒洒一篇,换你20分,怎么样你也值了。欢迎交流!
winlyf
2008-07-29
打赏
举报
回复
这么久都没有人来
谁能给我个离屏的例子或者基本的方法,显示文件是JPG格式的
winlyf
2008-07-18
打赏
举报
回复
[Quote=引用 7 楼 gaoteng1984 的回复:]
楼主可以查查"VC DirectX",DirectX应该用到了这个双缓存绘图技术
[/Quote]
我想问下 双缓存是不是就是离屏技术?或者什么其他的?
AliasKavin
2008-07-18
打赏
举报
回复
[Quote=引用 4 楼 AliasKavin 的回复:]
离屏渲染, offscreen rendering 渲染到纹理, Render to texture~~~
将物体或场景渲染到纹理的~~~ 见下面,不过例子还在准备中~~~~
http://www.csinx.org/IBlog/DirectX9/
[/Quote]
是对DX9的离屏渲染~~~ 不是DDRAW~
gaoteng1984
2008-07-18
打赏
举报
回复
楼主可以查查"VC DirectX",DirectX应该用到了这个双缓存绘图技术
winlyf
2008-07-18
打赏
举报
回复
不知道该怎么实现,假如图已经画好了,我再加幅图上去,应该也不会闪烁吧
winlyf
2008-07-17
打赏
举报
回复
我使用的是VC
winlyf
2008-07-17
打赏
举报
回复
另外是不是只有位图文件才可以读到离屏表面?
flysec
2008-07-17
打赏
举报
回复
在内存中另外建立一块虚拟的DC
在这个DC上画,其实也就是本来应该画到屏幕上的东西,先一起画到一个内存中BMP上
最后等所有的都绘制完成后,一次性贴到屏幕上去。免得你老是往屏幕上帖东西,一会一个人,一棵树,什么地图的来回折腾
AliasKavin
2008-07-17
打赏
举报
回复
离屏渲染, offscreen rendering 渲染到纹理, Render to texture~~~
将物体或场景渲染到纹理的~~~ 见下面,不过例子还在准备中~~~~
http://www.csinx.org/IBlog/DirectX9/
winlyf
2008-07-17
打赏
举报
回复
没有人会?
Python PyQt 全屏图片播放器项目
# Python PyQt6 全屏图片播放器项目## 课程介绍PyQt 是 Python 和 Qt 的融合,是一个非常强大的 GUI 库。本课程使用 Python PyQt6,带大家一步一步实现一个全屏图片播放器。课程的主要内容有:1....
关于
离屏
渲染
1、当前屏幕渲染 一般情况下界面的呈现是在当前屏幕渲染,首先CPU计算好frame等属性,将计算好的内容提交给GPU去渲染,GPU渲染完成之后就会放入屏幕帧缓冲区,然后控制器每隔一段时间会去屏幕缓存区读取渲染好的内容,从而显示出来。iphone手机的屏幕刷新率是60Hz,刷新一帧大概需要16.67毫秒左右,也就是每隔16.67毫秒左右控制器就会去屏幕缓存区读取一次GPU渲染的内容,假如GPU性能出现
问题
,如果CPUGPU累计耗时16.67毫秒还没有完成渲染,就会造成卡顿掉帧。 ...
关于
离屏
渲染的简单总结
最近关于
离屏
渲染
问题
的文章随处可见,对于一个小白来讲,可能去理解其中的原理是比较困难的。看了很多文章后,我也就是对
离屏
渲染有一点了解,在此做一个总结,直接说说我们平时应该怎样对待
离屏
渲染
问题
。观点基于个人理解水平,如有误区,我真诚地请大牛们指正。 对于我们通常用到的圆角图片,比如UIImageView这种,使用系统圆角虽然会触发
离屏
渲染,但是单价相对来说,是可以接受的。如果我们希望在滚动
关于canvas全屏的
问题
刚上手canvas,被它的全屏
问题
,搞到蛋疼,最后解决了,非常激动。关于canvas全屏,实际上要知道两样东西。 1.canvas等比缩放 2.canvas拉伸1 等比缩放 方法一:
方法二:使用HTML5 Canvas API操作var canvas = document.getElementById('c
Qt+Cef3
离屏
渲染(二)
还是以windows上vs2017 release版本运行的程序为例。 接上一篇,我们只是将
离屏
渲染的每一帧图片QImage,以异步事件的方法发送到了目标QWiget上,然后再将QImage绘制到屏幕上。 留下了一些待处理的
问题
: 滚轮事件 鼠标的点击事件 鼠标hover到链接上,鼠标形状的变化 键盘输入 输入框的右键弹出层 我们这篇博客就围绕这些
问题
进行处理。 一、
离屏
渲染的滚轮事件的处理 滚轮事件的处理最为简单。 在CefOSRWidget头文件中: protected: //其余代码与前面一篇相
游戏开发
8,304
社区成员
23,682
社区内容
发帖
与我相关
我的任务
游戏开发
游戏开发相关内容讨论专区
复制链接
扫一扫
分享
社区描述
游戏开发相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章