- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Unity WebGL中的底层插件
本文我们一起来看看Unity WebGL平台如何使用底层插件,如果您曾想过在网页中重用现有的C/C++代码,例如OpenGL ES实现的图形效果,请不要错过本文。我们从插件类型、实现插件、插件示例与演示几个方面进行阐述。
插件类型
Unity支持两种类型的插件:Managed托管插件和Native原生插件。对于托管插件来说,WebGL与其它平台支持托管插件的方式一致,唯一的区别在于插件的托管程序集与引擎及用户的托管代码会一起转换为JavaScript,这里指asm.js/wasm。
对于原生插件来说,针对网页来谈“原生”真的有意义么?如果原生特指例如Mac,Win 32/64等底层架构,当然没有意义。然而,Unity WebGL也支持几种其它类型的插件:JavaScript、C/C++以及预编译的LLVM字节码。
Unity用户手册中有几个WebGL平台下JavaScript和C语言插件的例子,并且演示了如何通过脚本与它们进行交互。既然可以使用C/C++源代码,那就可以访问底层插件接口用来渲染。Unity 5.5就可以通过新加的代码钩子,来注册底层插件。
如您所见,我们需要添加较多代码,下面来看看实现插件需要哪些步骤。
实现插件
首先,需要将Unity安装目录下Editor/Data/PluginAPI中的Plugin API头文件,复制到插件源文件所在的目录。
插件使用头文件IUnityInterface.h和IUnityGraphics.h来声明所需的接口。由于这些头文件适用于特定的Unity版本,所以保持与编辑器版本同步至关重要。注册插件需要调用函数UnityRegisterRenderingPlugin。
无论如何,首先需要实现加载和卸载的回调函数来获取IUnityGraphics接口,并注册或注销用于底层渲染的图形设备回调函数。示例如下:
实现了以上接口,就可以注册插件了。
最后,启动时需要添加C#绑定并注册插件,以保证UnityRegisterRenderingPlugin确实执行了。
然后需要实现OnGraphicsDeviceEvent并添加渲染代码。
注意,如果不同的平台使用相同的插件源文件,可以检查__EMSCRIPTEN__或UNITY_WEBGL (仅限Unity 5.6及以上版本)来条件编译代码。
最后,如果需要浏览系统头文件,如:gl2.h,可以在Unity安装目录下找到:
Editor/Data/PlaybackEngines/WebGLSupport/BuildTools/Emscripten/system/include
插件示例
如果有兴趣尝试制作渲染插件,Unity开源库Bitbucket上的NativeRenderingPlugin是一个非常棒的起点。它已经设置注册了所需的回调,编译了自己的着色器,并且演示了如何在简单的Unity场景中渲染一个三角面。
注意,在Unity WebGL中不需要单独建立C/C++插件。该示例中的Unity项目包含一个简单的文件(Plugins / WebGL / RenderingPlugin.cpp),其中包含了插件的具体实现,如下所示:
演示
如果在支持Unity WebGL的浏览器或者设备上浏览此页面,请查看下面的Demo,它展示了用OpenGL ES写的Mandelbrot分形效果,这是通过原生渲染插件调用的。
最初的OpenGL 2.0 Demo是用C++和GLSL写的,所以只需做一些修改,使其与前面的原生渲染插件Demo完美兼容。您可以点击【阅读原文】下载Demo的Unity项目及插件源代码。
总结
本文介绍了Unity WebGL中底层插件的实现办法。考虑到Unity WebGL平台的调试工具并不丰富,建议可以在不同的GLES2/3 API平台上制作原型,以保证WebGL平台一旦构建成功,也可以在iOS,Android或PC端正常运行。了解更多详情,请访问Unity官方中文社区()。
您可能关注的文档
- RFID技术与应用(2016) EPC编码技术 教案-RFID30-2.doc
- RFID技术与应用(2016) RFID 天线知识 2 RFID 技术基础-实习实训.doc
- RFID技术与应用(2016) RFID测试技术 教案-RFID24-2.doc
- RFID技术与应用(2016) RFID测试技术 教案-RFID25-2.doc
- SMT技术 SMT技术 电子产品生产与制造行业简介.doc
- SMT技术 第一章:SMT生产准备 LED视觉贴片机技术.doc
- Solidworks培训及考证 Solidworks培训及考证 2.2 草图绘制方式(logo).docx
- Solidworks培训及考证 Solidworks培训及考证 3.2 基本轴知识(logo).docx
- SQL数据库设计 SQL数据库设计 1、(SQL2005)sql_server2005实验指导书.doc
- UI设计基础-2017 中继器的组成 Axure RP 7.0 的样式设置.docx
- web前端开发 《Web前端开发》课程简介 《Web前端开发》课程简介.doc
- web前端开发 知识点1 :在canvas中使用图像 电子教案.doc
- web前端开发 知识点2:绘制文字 课后习题答案.doc
- web前端应用开发 任务1美化“鲜花介绍”页面 项目三 任务1美化“鲜花介绍”页面.doc
- X线检查技术(医学影像技术) 37.课程标准 《X线检查与诊断技术》课程标准.doc
- 安全生产基础知识 安全技术标准 SY5974-94++钻井作业安全规程.doc
- 安全与环保教育 药物滥用的危害 药品滥用的危害.docx
- 安卓高级应用 数据库管理 项目实施方案_数据库管理.docx
- 安卓开发基础 Activiyt创建方式 1 实施方案_利用AS向导创建Activtiy页面.docx
- 斑铜制作技艺 实用与审美—造型艺术赏析 造物功能为主的造型意识.docx
最近下载
- 上海高考数学真题专题-立体几何专题 .pdf VIP
- 某某机场油库和航空加油站工程施工组织方案(最全).doc VIP
- 叁化(2004)1157 下锚安装图.pdf VIP
- 规模养殖场监督检查表式样.doc
- 20080601-招商证券-食品饮料业2008年中期投资策略:高端需求结构分析(PPT).pdf VIP
- 2025中医内科主治医师考试真题及答案.doc VIP
- 设备设施风险评价记录表.pdf VIP
- 关于知音的小故事[共1页].doc VIP
- 2025针灸中医四级考试真题及答案.doc VIP
- 人教版七年级上册英语Unit1- 9各单元重点语法知识点汇编(实用,必备!).docx VIP
原创力文档


文档评论(0)