谷歌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 ...
随机推荐
- [转]用JS获取地址栏参数的方法(超级简单)
本文转自:http://www.cnblogs.com/fishtreeyu/archive/2011/02/27/1966178.html 方法一:采用正则表达式获取地址栏参数:( 强烈推荐,既实用 ...
- Linux raw socket
转载自:http://www.cnblogs.com/uvsjoh/archive/2012/12/31/2840883.html 我们平常所用到的网络编程都是在应用层收发数据,每个程序只能收到发给自 ...
- POJ 2594 —— Treasure Exploration——————【最小路径覆盖、可重点、floyd传递闭包】
Treasure Exploration Time Limit:6000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64 ...
- jq回到顶部效果分析
在浏览网页时,超出屏幕高度就会出现提上点击回到顶部的图标,点击即可回到页面顶部. 用到的知识点如下: 1.首先控制图标的显示和隐藏,先要获取浏览器的高度. var wHeight = $(window ...
- 异步对象(XMLHttpRequest)的帮助脚本
异步对象五部曲 这是post请求的. //1.00创建异步对象 var xhr = new XMLHttpRequest(); //2.0 xhr.open("post", url ...
- 服务器断电后 redis重启后启动不起来
服务器断电后 redis 重启后启动不起来 原因:db持久化失败 1. 先查询redis的进程 ps -ef|grep redis 2. 查询redis的缓存文件在哪 whereis dump.rdb ...
- (七)JavaScript之[调试]与[前端表单验证]
12].调试为什么要去调试?1.在编写JavaScript时,如果没有调试工具将是一件很痛苦的事情.2.没有调试工具是很难去编写JavaScript程序的.3.编写的代码可能包含语法错误.逻辑错误,如 ...
- <Android 基础(十)> FloatingActionButton
介绍 Source Code中的介绍如下: Floating action buttons are used for a special type of promoted action. They a ...
- Android SQLite数据库之事务的学习
SQLite是Android系统内置的一款轻量级的关系型数据库,它的运算速度非常快,占用资源很少,通常只需要几百K的内存就足够了.SQLite不仅支持标准的SQL语法,还遵循了数据库的ACID事务. ...
- C盘空间太大,分区助手减小分区大小教程
首先看一个需要缩小C盘或需要减少分区空间的一个例子:“我的电脑里C盘剩余空间为530GB,除了C盘外还有一个D盘,但D盘的空间不到30GB,另外还有两个隐藏分区,一个200MB,一个15GB.我想把C ...