设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 流川枫
打印 上一主题 下一主题

[已经过期] RMXP系统里画图块的方式是每帧循环画,还是一次画好?

 关闭 [复制链接]

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

21
发表于 2009-10-15 20:10:23 | 只看该作者
本帖最后由 link006007 于 2009-10-15 23:55 编辑
SDL雖然沒用過,但是查看了相關的文檔,感覺可以用到的硬件加速很少。
SDL和DDRAW都很簡單,不過我覺得最簡單的是D3D,只不過元素多一點。
RGE是什麼?我猜 RPG GAME ENGINE? ...
流川枫 发表于 2009-10-15 20:02

SDL硬件加速多还是少, 至少我不敢说... 因为SDL只不过是一个相对DX或GL高阶的图形库,它本身并不会直接和硬件打交道... DX(7)或GL对硬件有多大的支持, SDL就有多大...

既然你觉得D3D或DDraw很简单... 那就没有必要争论RM的tile如何描绘了
因为几乎所有用D3D写的游戏都有这么一个更新规则(DDraw也差不多,如果不是单缓冲的话):
Clear->BeginScene->your_scene_update_function->EndScene->Present

从RM对精灵的处理能力上来说,不太像用D3D写的
夏娜的RGE的原型HGE用的就是D3D, 在HGE里面,一个屏幕同时渲染2000个精灵(这些精灵每帧都在做旋转,缩放)时,在我的机器上FPS可以达到250+, 如果是RM...有谁可以再一个屏幕里面同时旋转缩放数百个精灵?
如果说是因为封装成ruby后的性能损失..ms也损失的太过分了- -
而且从RGSS102J.dll中也没有明显的连接d3d库的信息
个人觉得RM很多地方还是用软件处理图像... 旋转多个精灵时的FPS掉的太猛了,在RM的帮助文档里面也有提示旋转很发费时间... 如果是硬件加速, 单单旋转应该不会这么在意,在3D里面这算小的了
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
22
发表于 2009-10-15 23:16:03 | 只看该作者
咦,原來“前面你已經說得很清楚了,問題的答案”?這麼說來前面那些“二選一”的“看似問題”都是在陳述撒……明白了! =v=

先不说 D3D 也有 Surface、不懷疑 RM 是否用 D3D 寫的——RM 歸根結底是 2D 遊戲引擎,用的紋理也好表面也罷,都是畫布的概念,如果你用 GDI,甚至 Java 寫過遊戲,你就知道爲什麽你說的“第二個的話太浪費CPU時間片”這句話僅僅適用於“直接往屏幕上畫”了。在內存中循環畫出 640 * 480 大小的圖塊,較之直接畫出 640 * 480 的圖慢不了多少。我在 16 樓第二段針對的就是你這句話。

最後,確實沒用 D3D 寫過引擎,不知是否方便指點一下我是如何理解錯誤的呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

23
发表于 2009-10-15 23:35:50 | 只看该作者
本帖最后由 link006007 于 2009-10-15 23:53 编辑

发多了 - -
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
24
 楼主| 发表于 2009-10-16 20:26:04 | 只看该作者
本帖最后由 流川枫 于 2009-10-16 20:27 编辑
SDL硬件加速多还是少, 至少我不敢说... 因为SDL只不过是一个相对DX或GL高阶的图形库,它本身并不会直接和硬件打交道... DX(7)或GL对硬件有多大的支持, SDL就有多大...

既然你觉得D3D或DDraw很简单... 那就没有必要 ...
link006007 发表于 2009-10-15 20:10

HGE的那个2000范例,在我机器上卡到只有7FPS。
DDRAW是LJ,这点是每个对比过DDRAW和DX9的程序员的一致肯定。
您对我们的理解是错误的,我们指的是我和我的提问。
因此,在您了解我们之前,请自重。

另外,无论是用TEXTRUE还是SURFACE,在DX9里都可以实现,这种问题请无视。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
25
 楼主| 发表于 2009-10-16 20:51:55 | 只看该作者
咦,原來“前面你已經說得很清楚了,問題的答案”?這麼說來前面那些“二選一”的“看似問題”都是在陳述撒……明白了! =v=

先不说 D3D 也有 Surface、不懷疑 RM 是否用 D3D 寫的——RM 歸根結底是 2D 遊戲引擎, ...
紫苏 发表于 2009-10-15 23:16

错误是必然存在的,正因为有错误才会有真实。
您一次又一次的误解,一次又一次的为您的误解而辩驳,一次又一次一次又一次……
但是,您所做的所有努力的出发点本身就是一个错误。
讨论问题时,最糟糕的不是找不到问题的答案,实际上却是对方的误解。
为了让对方明白自己的看法和观点,往往需要费耗尽体内近乎一半的查克拉。
如果您不能透过事物的表象看到其实质,您的讨论就等于在和妄想的对方讨论根本不存在的问题。

我的最后通告,我主张的问题RM是按1号还是2号方案或者其他:
1.只一次将地图上所有图元(除动态)绘制到缓存(不管是纹理还是页面,甚至是其他),以后刷新地图只需要从改缓存中截取640*480的区域绘制出来(不管绘制到屏幕上,还是另外一个缓存)。

2.每次需要刷新地图时,循环N次将每个图元一个一个一个一个地从地图元件图片上绘制出来(不管是绘制到屏幕上还是绘制到另一缓存)。(该方案一次刷新最少需要循环20*15*3=900次,为了将3层地图图元都绘制出来。这和只要绘制3次640*480的图像的1号方案相比,要花费更多的性能。尽管画出来的图像大小都相同,但是前者只要绘制3次,后者需要绘制900次。当然不一定到900次,但是最少也有300次,因为地图图层1是画地板的地方。)
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

26
发表于 2009-10-16 21:54:33 | 只看该作者
本帖最后由 link006007 于 2009-10-16 22:59 编辑

我没打算介入你们的问题,我只知道描绘都是覆盖静态的图像,所以必然会有清屏和分层
我只是对你说的(1)"RM用D3D",又"是每帧描绘还是一开始画好",和(2)"SDL没有太多可用的硬件加速"感兴趣而已.
另外:
对感兴趣的问题都要自重那最好不要发帖,说多了什么都漏了,因为我是觉得有错误才能够自重,所以实在不好意思
我错在什么地方请你指出来
上次紫苏那个Viewport.Rect的我错了,和goahead的那个动画的,我也错了(加上潜水以前的,太多了),我感谢他们都可以指出

另外 不要拿DDraw和DX对比....
最后确认下你那个FPS是7是可能的,比我N卡6800原始好多的,,,
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
27
发表于 2009-10-17 00:25:51 | 只看该作者
本帖最后由 紫苏 于 2009-10-17 00:30 编辑
错误是必然存在的,正因为有错误才会有真实。
您一次又一次的误解,一次又一次的为您的误解而辩驳,一次又一次一次又一次……
但是,您所做的所有努力的出发点本身就是一个错误。
讨论问题时,最糟糕的不是找不到问 ...
流川枫 发表于 2009-10-16 20:51

很抱歉浪费你的查克拉了,不过你的“最后通告”除了照搬你之前的问题和添加了对前面的讨论的一些注释之外,并没有指出你所谓的“我的理解错误”何在。

你现在就好像在给一个参与讨论,但你却觉得误解了你问题的人说:“你的讨论不OK,不work,你知道这世界上什么最糟糕吗,不是找不到解答,而是解答和问题不搭界,请你不要只看事物的表面,而是看清其本质,你是在妄想和对方讨论不存在的问题,但是,我才不试图让你明白我的问题呢,因为我要节约我的查克拉。”姑且先不用“我提出了问题,问题就存在,存在即合理”来跟你抬杠,我只是想表明一下我目前的心态,那就是——找出错误并改正。可惜的是,我们来回三四贴了,一直没有从你那得到这个机会。

那么师兄,我最后来尝试评论一下你的方案,尽量引用你的原文,如有半分误解,万望指点则个。虽然不好意思浪费你的查克拉,但是作为一个讨论者,我不想被人说理解错误,但是周旋了两三个回合之后还不知道对方所谓的错在哪儿……本着学习的心,也希望你不吝赐教 Orz

方案#1,你自己也算过了,那是不可能的,挥霍这般巨大的空间,没有什么游戏会这么做,而我在本贴中所有回帖也对此持积极态度——确实不可能。

方案#2,你在 25 楼之前对这个方案的看法都是“太浪费 CPU 时间”,所以我只能假设你这个方案是直接画到屏幕上,因为在内存中,即便是循环几百次,每次描绘 32 * 32 的位图,那在当今的硬件条件下,也不至于“太”浪费 CPU 时间。既然你的方案是直接画到屏幕上,那当然不可取,于是我提出了双缓存。在双缓存的机制下,你先要“循环N次将每个图元一个一个一个一个地从地图元件图片上绘制出来”到缓存上,然后你要快速地拷贝到屏幕上,所以前者是循环描绘,后者是一次描绘(拷贝),只不过这里的一次画好不是说一次画好整个地图,而是一次画好 640 * 480 大小的一个地图区域。

另外,我早就应该指出这一点:你这两个方案,无论哪一个,都有一个循环描绘图块的过程。方案#1是所谓的“只一次将地图上所有图元绘制到缓存”,你怎么个“一次绘制”法?map***.rxdata 是仅有的保存地图数据的文件,里面保存的 RPG::Map 对象有两个关于图块的属性,tileset_id 和 data,而后者和之前提到的 Tilemap#map_data 默认是永远保持一致的,在 Spriteset_Map 生成的时候,相应的 Tilemap 就生成了,而 Tilemap 的 map_data 属性就和当前的 RPG::Map#data 绑定了起来。然而,这个 data 它仅仅是一个图块的索引的集合,你只有索引,怎么“一次画好”?你只能循环遍历 data 数组,通过图块索引去访问 tileset 的相应图块,然后循环描绘到缓存。

于是:
方案#1要循环描绘图块到缓存;
方案#2要循环描绘图块到缓存;
方案#1要描绘的图块 >= 300 个;
方案#2要描绘的图块 = 300 个。

如果方案#1有着上述性质,且还是“牺牲空间换来了速度”的话,那方案#2 加上双缓存机制只能更快,不可能更慢。我注意到了你两个方案的括号中的内容,说什么不论是绘制到屏幕还是缓存,这压根就不能“不论”,因为两者在绘制时间上有天壤之别。

其实这贴应该讨论的是地图图块的绘制方式,而不是非要在你这两个选项中选一个,因为根据你的描述,你这两个选项单选任一个都不对。然而你在 25 楼又不动声色地加了一个“其它”,那我当然也要改一下我的答案,那就是其它。既然如此,我自始至终都是在议论地图图块的绘制方式,又有何“对你问题的解错误”可言?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
28
 楼主| 发表于 2009-10-17 18:52:02 | 只看该作者
本帖最后由 流川枫 于 2009-10-17 18:54 编辑
很抱歉浪费你的查克拉了,不过你的“最后通告”除了照搬你之前的问题和添加了对前面的讨论的一些注释之外,并没有指出你所谓的“我的理解错误”何在。

你现在就好像在给一个参与讨论,但你却觉得误解了你问题的人 ...
紫苏 发表于 2009-10-17 00:25

我對您的無知表示同情。
現在已經不再是誤解不誤解的問題了,以您的智商我很難和您解釋。
您不是誤解,而是以您的智慧根本不能理解。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
29
 楼主| 发表于 2009-10-17 18:57:37 | 只看该作者
我没打算介入你们的问题,我只知道描绘都是覆盖静态的图像,所以必然会有清屏和分层
我只是对你说的(1)"RM用D3D",又"是每帧描绘还是一开始画好",和(2)"SDL没有太多可用的硬件加速"感兴趣而已.
另外:
对感兴趣的问题 ...
link006007 发表于 2009-10-16 21:54

您繼續和您妄想出來的東西做鬥爭吧。
您們兩位,請先學好遊戲編程再來和別人討論技術問題吧。
現在的您們,沒有讓我認同的資格。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
480
在线时间
177 小时
注册时间
2006-10-3
帖子
618
30
 楼主| 发表于 2009-10-17 19:02:58 | 只看该作者
還是讓美兽出來回答您們的錯誤吧,我在幾樓前就已經解決所有問題了。
在我初学RM的时候觉得脚本是高手的工具,等我学会了编程技术后才发现脚本原来是小孩子的玩具。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-2 03:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表