加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

从引擎核心谈页游处理 flash平台和 webgl_html平台的硬件加速 2d

发布时间:2020-12-15 06:25:25 所属栏目:百科 来源:网络整理
导读:? flash的stage3d 以及? webgl??? 只要是两者都接触过人得会发现? 他们其实是类似的 他们的硬件编程并没用多大的区别 唯一令我不能释怀的是 js的面向对象写的太痛苦? 但是从编程上讲 stage3d的东西全部完全可以移植到 webgl上去??? 而且处理手法 一样 下面说

?

flash的stage3d 以及? webgl??? 只要是两者都接触过人得会发现? 他们其实是类似的

他们的硬件编程并没用多大的区别

唯一令我不能释怀的是 js的面向对象写的太痛苦?

但是从编程上讲 stage3d的东西全部完全可以移植到 webgl上去??? 而且处理手法 一样

下面说的无关平台?? 当页游中? 有大量资源时如何发挥 GPU? flash 一样? 哪怕webgl页游也一样

?

正如前文 本人的 yf2d引擎一样??? <js版本在开发中>,当处理 比如人物角色? 武器 等等海量图片? 如何? 处理?

?

在yf2d引擎中其实就是用Nd2d的 batch 技术??? 但是 有一个缺陷? 那就是 贴图最大的比例是2048*2048

?

也就是一张最大的地图集 也只有 2048*2048 不可能将所有的素材全部放在一张地图上

?

最开始的处理手法 是????? 比如?? 人物衣服放在 一层《服装贴图集》 武器放在一层《武器贴图集》?? 每一层都是一个贴图集

?

效率毋庸置疑这样渲染的次数最少? ,但是这样处理发现人物遮挡不能正确处理《武器装备 和人去分层了》 因为? 武器 和人物已经分开?? 我这样做最先是按照GPU效率最大化利用去做的

最终发现这样不行? 只有 对素材较小 的才有用 能在2048*2048全部画出来的才有用?

最后只能按照第二套方案? 将每一个人物? 就是一个Batch对象? ,将这个对象里面的所有图片,? 人物服装??? 武器 刀? 坐骑马? 以及后面的随着游戏要变化加的一些新装备都可以放进去 这样 然后通过这些东西生成新的texture?,不用担心 2048*2048完全够用

但是这样的话 一千个角色 就要 渲染一千下? 我测试了一下?? 我只设置了值为1000 个对象 采用一千个渲染对象? 发现? 帧频稳定60? 当然我已经加了地图滚屏? 地图滚屏 就是 一层 一个Bath对象???? 在滚屏下 1000对象 60帧频

?

?最终得出这样一个结论?? 就是一个 角色对应一个batch对象?? 能达到 1000对象? 这样完全满足 游戏需要?,基本上 不可能 一个屏幕1000人? 就算的 也可以游戏适当处理 屏蔽些

?一个角色一个batch对象??? 下面就开始? 处理 batch所需要的贴图

? 唯一需要注意的是 贴图是动态生成的? 比如 人物有 服装 fBitampData????? 武器 wBitampData? 坐骑 ZBitmapata?

我们就需要将这三个BitampData合成一个Texture 来进行处理?

?

在整个游戏中 我们可以对所有的 角色的Texure统一处理????? 使每 个组合只有 一个Texure??? 比如 f1 w1? z 组成Texture1??

f2 w2 z2 组成Texture2????? 我们通过唯一ID 将已经出现的缓存下来?? 当有相同的对象创建时直接取Texture??当然? 根据游戏的不同 也可以临时创建Texture? 不同情况? 不同处理

?

?

上面的东西 完全适用webgl? 这些 处理手法和 平台无关?? coco2d? 也是采用 Batch的手法? 总来说batch是王道???????? 和平台无关

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读