热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

专访白鹭时代马鉴:WebGL3D手游时代降临

12月5日,在2015HTML5移动生态大会上,白鹭时代联合创始人马鉴发布了Egret3D手机页游游戏引擎。在会后,马鉴接受了InfoQ记

12月5日,在2015HTML5移动生态大会上,白鹭时代联合创始人马鉴发布了Egret 3D手机页游游戏引擎。在会后,马鉴接受了InfoQ记者的采访,谈到了WebGL游戏化是否成熟以及WebVR发展的问题。

\u0026#xD;\n\u0026#xD;\n

Egret 3D是自今年5月份发布Egret 2.0以来颠覆性的重大升级,基于移动游览器的WebGL 3D图像API,以及实验性的支持了WebVR API,相关的开发工具也获得同步更新。据马鉴在大会上介绍,Egret 3D的相关特性有:

\u0026#xD;\n\u0026#xD;\n
  • 语法结构与Egret 2D类似,封装了WebGL API,使其更加简单易用。\u0026#xD;\n\t
  • 支持3D模型封装,并有自己的3Dmax输出插件,方便输出对应资源。\u0026#xD;\n\t
  • 包体仅200K,相比Three.js减少35%。\u0026#xD;\n\t
  • 支持多种渲染方式以及后期特效。\u0026#xD;\n\t
  • 内置WebVR SDK,只需调节参数即可实现VR效果、设备支持。\u0026#xD;\n\t
  • 开发工具的更新支持React组件的可视化编程,导出JSX。\u0026#xD;\n

另外在大会上马鉴还发布了青雀移动解决方案,使用云端积木式的开发方式搭建移动Web应用和HTML5宣传页面。

\u0026#xD;\n\u0026#xD;\n

以下是会后InfoQ记者对马鉴的采访整理。

\u0026#xD;\n\u0026#xD;\n

InfoQ:目前WebGL在各移动平台的发展情况如何,是否已经足够成熟,它在不同平台上的差异大吗?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:目前WebGL在移动平台上的覆盖率超过84.5%,WebGL标准在2011年发布,我们看到现在几乎所有的主流浏览器厂商都支持了WebGL,包括苹果、谷歌、微软等等,目前市面上已经出现了一些基于WebGL的3D绘图库,也有越来越多的人来使用它们。

\u0026#xD;\n\u0026#xD;\n

各个移动平台也基本早就支持了WebGL,不过在以前受限于移动设备的性能,所以没有人用它来做很多东西,但现在我们的主流的移动设备差不多都 有独立的GPU处理单元,所以这个性能限制基本不存在了。至于平台差异,因为大家都按照WebGL标准去实现API,所以基本上没什么差异。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

InfoQ:类似Egret 3D这样基于WebGL的游戏引擎的性能瓶颈在哪里?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:我们所遇到的主要的瓶颈在内存和绘图IO上,这个和目前3D手机游戏引擎的瓶颈应该差不多,我们也做了一些相关的优化。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

InfoQ:Egret 3D游戏和原生3D手游在哪些方面还有差距?原因出在哪里?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:WebGL API本身只是对OpenGL ES 2.0的一个封装,因此用WebGL做手游和原生手游其实并没有很大的差别,不过因为WebGL的API是固定的,在底层优化方面不如原生,另外JS的渲染和计算速度也比不上原生引擎,不过目前来看,因为移动设备性能提升,这些差距是越来越小的。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

InfoQ:Egret使用TypeScript开发,请问您对这门语言看法如何?是否提高了生产力和效率?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:我们在第一天开发Egret的时候就用了TypeScript,在此之前我们用 ActionScript做过一些大型项目,而在Javascript上开发大型项目却是一个顽疾,TypeScript的确是极大的提升了生产力和团队协作的能力,我们团队一直用到现在也非常喜欢。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

InfoQ:WebVR标准好像还在草案阶段,目前实用性如何?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:WebVR目前是在草案阶段,但是Google的Chrome已经提供了一套完整的API可以使用 了,我们算是WebVR的早期利用者,目前我们和Google的相关开发者有过接触,密切跟踪他们的研发进展和未来的更新,另外我们也正在接洽W3C中国,希望能参与到标准的制定过程中来,给标准提一些建议。

\u0026#xD;\n
\u0026#xD;\n\u0026#xD;\n

InfoQ:我看到Egret开发工具支持React可视化编程,不知道是怎么做到这一点的?

\u0026#xD;\n\u0026#xD;\n
\u0026#xD;\n

马鉴:因为我们自己有一套UI组件,并且支持它的可视化开发,我们这套UI组件是用XML来描述的,这个其实和React里面的JSX类似,于是我们就做了一个EXML到JSX的一个转换,通过编写我们的UI组件,在IDE里可以导出React的JSX出来, 算是间接的支持了React的可视化编程。

\u0026#xD;\n\u0026#xD;\n

当然,目前前端界对可视化编程存在争议,我们做这一条的出发点是我们的Lark框架搬到云端后,想降低开发门槛,完全通过拖拽组件就可以生成代码,添加React支持可以让我们的这套工具使用范围更广泛,可以和其它的基于React的开发工作流无缝的结合起来,这是我们的一个初衷。

\u0026#xD;\n


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
author-avatar
麦尔小哈PICA
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有