• 谷歌angle库使用心得


    通过谷歌的angle库可以在项目中,调用opengl接口渲染时,选择调用directx或者webgl来渲染,避免机器没有安装opengl驱动启动异常的问题。

    这个库的使用可以不修改原有使用opengl的功能上,使用directx绘制。

    以下是我在接入该库时遇到的一系类问题和心得:

    angle库可以在谷歌git上下载:

    https://chromium.googlesource.com/angle/angle

    针对windows 平台,微软也从谷歌原生angle上作出小修改:

    https://github.com/Microsoft/angle

    如果使用windows开发,建议使用微软的angle项目。

    遇到的一些坑:

    1.在绘制线条的时候,调用glDrawArray(GL_LINE, 0, 2)接口绘制线条时,directx渲染底层调用DrawPrimitive接口绘制,但该接口不知道控制线条的粗细、实虚线,需要自己在修改Renderer9.cpp(本人使用d3d9来渲染)的drawImpletment函数,

    使用ID3DXLine接口绘制线条。

    2.性能问题,由于angle库调用opengl或者directx时,需要转换各自渲染接口所需的顶点格式或者着色器等等,转换过程需要消耗一定的cpu运算能力,如果在一帧需要同时大量绘制操作,建议不适用该库。如果在内存允许的情况下,(本人在一帧中测试,绘制九千条线,fps会从30帧下降到10多帧,出现明显卡顿)。

    可以打包绘制的顶点数据,一次性绘制完成,消耗更多的内存,换取性能。

    3.关于xp系统下的使用问题,官方指出只能通过vs 2015及最新版本编译,并且使用windows sdk10以上编译,很显然该库不支持xp系统下运行,而且xp系统也不支持directx 11的绘制。我后面改用vs 2015编译, 平台工具集选择 “Visual Studio 2013 - Windows XP (v120_xp)”,删除directx11 的api,不使用系统自带的direct库和头文件, 改用directx sdk的库和头文件,

    删除不兼容xp的api,最后编译成库在xp系统下运行,实现过程相当繁琐,工作量也多,并且后续bug维护难以修复,毕竟不是官方开发人员。

    最后总结一下angle的优缺点:

    优点:跨平台切换渲染方式,不担心设备使用环境或缺失驱动问题。

    缺点:性能一般,不适用大量绘制,不兼容老系统xp,directx 不兼容控制线条粗细。

    转载请注明出处, from 博客园HemJohn

  • 相关阅读:
    phpQuery—基于jQuery的PHP实现
    php 知乎爬虫
    windows下安装php5.5的redis扩展
    Redis 安装
    使用AngularJS创建应用的5个框架
    Redis能干啥?细看11种Web应用场景
    前端开发必须知道的JS之闭包及应用
    javascript深入理解js闭包
    day16<集合框架+>
    day15<集合框架>
  • 原文地址:https://www.cnblogs.com/HemJohn/p/10470221.html
Copyright © 2020-2023  润新知