zoukankan      html  css  js  c++  java
  • 谷歌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

  • 相关阅读:
    centos7安装node.js
    docker容器互联,实现目录、服务共享
    解决docker容器中Centos7系统的中文乱码
    修改centos7容器的时间和宿主机时间一致
    linux安装中文字体
    制作OpenOffice的Docker镜像并添加中文字体解决乱码问题
    centos容器yum安装JDK环境
    函数装饰器
    nc(NetCat)命令
    Linux源码包安装程序
  • 原文地址:https://www.cnblogs.com/HemJohn/p/10470221.html
Copyright © 2011-2022 走看看