谷歌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
谷歌angle库使用心得的更多相关文章
- 关于codeforces国内访问卡顿慢的最新解决办法,谷歌字体库/屏蔽facebook链接
在host里最后加上 方法起源来自于https://blog.csdn.net/qq_40693171/article/details/83623409 但是里面的360字体库已经停运http://w ...
- Windows动态库学习心得
最近在工作中需要给项目组其他成员提供调用函数,决心抛弃以前“拷贝头文件/源文件”的简陋方法,采用动态库的方式对自己开发的接口进行模块化管理.因之前一直没有机会从事Windows动态库的开发,现借助这个 ...
- C++标准库开发心得
最近放弃MFC,改用C++标准库开发产品.毕竟MFC用熟了,马上改用STL还不太习惯.下面列出下总结的改用STL遇到的问题和解决办法: 1.清除空格 remove_if(iterBegin, iter ...
- muduo网络库使用心得
上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩.下了mudo使用手冊和035版的代码看了下结构,感觉是一个比較成熟并且方便使用的网络库.本人手头也有自己的网络库,尽管不 ...
- 【原创】Libjpeg 库使用心得(一) JPEG图像DCT系数的获取和访问
[原创]继续我的项目研究,现在采用Libjpeg库函数来进行处理,看了库函数之后发现C语言被这些人用的太牛了,五体投地啊...废话不多说,下面就进入正题. Libjpeg库在网上下载还是挺方便的,这里 ...
- 谷歌日志库GLog 使用说明
1 引用头文件 加载库 #include <glog/include/logging.h> #pragma comment(lib,"libglog.lib") 2 初 ...
- C++Primer,C++标准IO库阅读心得
IO 标准库类型和头文件 iostream istream 从流中读取 ostream 写到流中去 iostream 对流进行读写:从 istream 和 ostream 派生而来fstream if ...
- Centos7 下谷歌日志库GLog配置
1 glog下载地址 https://code.google.com/archive/p/google-glog/downloads glog-0.3.3.tar.gz 需要FQ,直接打不开 2 解压 ...
- bcg库使用心得两则
作者:朱金灿 来源:http://blog.csdn.net/clever101 最近帮同事解决了两个BCG库的使用问题,特记录下来. 一是在outlook风格停靠栏上创建对话框的做法.代码如下: C ...
随机推荐
- pat1019. General Palindromic Number (20)
1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- PHP算法——生成唯一字符串
经常遇到忘记密码的情况,点击一下忘记密码,然后收到更改密码的链接,连接中往往都会有一段很长而且很乱的字符串.试想一下,如果出现了重复的字符串,那岂不是把别人的密码给重置了? 所以产生唯一数对于网站的安 ...
- ASP.NET MVC扩展自定义视图引擎支持多模板&动态换肤skins机制
ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支 ...
- Python is 和 == 的区别, 编码和解码
一.is 和 == 的区别 is : 进行比较,比较的是内存地址是否一致 ==:进行比较,比较的是值是否相等 1.小数据池: 数字小数据池范围 -5~256 字符串中如果有特殊字符则他们的内存地址不一 ...
- C++ Knowledge series Template & Class
Function Function is composed of name, parameter (operand, type of operand), return value, body with ...
- 使用C#实现计划任务(corn job)
维基百科上是这样描述计划任务的: “Cron is a time-based job scheduler in Unix-like computer operating systems. Cron i ...
- python模块详解 hashlib
hashlib模块 用于加密相关的操作,在python3中替代了md5和sha模块,主要提供SHA和MD5算法. MD5 import hashlib m = hashlib.md5() #调用md5 ...
- python字符转码
字符的编码与转码 demo UTF-8 转GBK python2.7 默认编码ASCII 没有转Unicode 直接转GBK 1 .系统的默认编码是ASCII , 程序的指定编码是UTF-8,在enc ...
- ActionMethod_DMI_动态方法调用
Action执行的时候并不一定要执行execute方法可以在配置文件中配置Action的时候用method=来指定执行那个方法,也可以在url地址中动态指定(动态方法调用DMI)(推荐) 动态方法调用 ...
- 使用mongoDB时错误解决
接触mongodb遇到的错误,记录下来,后续遇到问题,会持续更新 为了让mongodb更直观,在windows使用了NoSQL Manager for MongoDB作为连接工具 1.在连接数据库时遇 ...