小菜鸟带着梦想学chromium
风雨送春归,
飞雪迎春到。
已是悬崖百丈冰,
犹有花枝俏。
俏也不争春,
只把春来报。
待到山花烂漫时,
她在丛中笑。
这首卜算子·咏梅可是应了我的心情了。最近换工作,受到频频打击,面试过程中发现满世界都是搞Chromium的,面试官看起来都快90后了,但是后生可畏,Chromium聊起来一套一套的,什么GPU加速、什么多进程多线程自由切换,把我问倒无数回。无数失败之后,搞得我连去老罗的锤子面试的信心都没了,失去做一个有情怀的人的机会。痛定思痛,下定决心学习Chromium,再不深入学习它,可能完全跟不上时代、会直接被KO出局的。
好了,题外话说完了,言归正传。Chromium的东西那么多,从那里入手呢?既然GPU加速被google吹得那么神,我们就从GPU依赖的OpenGL开始吧。什么是Chromium的GPU加速呢?有什么好处呢?
GPU加速就是利用显卡的超强3D计算能力做层与层的合成,甚至部分绘制。请看下面的Chromium合成架构图:

上图左边是渲染进程,里面调用Skia,再调用合成器;最右边是浏览器进程,里面有窗口;中间红色框的是GPU进程,里面是合成器的上下文,把合成的工作委托给GL/D3D模块完成,GL/D3D输出到窗口HWND
开发者可以将页面的渲染工作部分交给强大的GPU(电脑上就是显卡,嵌入式芯片上就是实现了OpenGL API的图形图像处理单元)来进行。这其实已经是现代浏览器的趋势,微软的 IE10 已经支持 GPU 硬件加速,而 Firefox 已经启用了这个功能的支持。
那么这个黄色的写着GL/D3D的东东是个啥?它就是大名鼎鼎的OpenGL以及微软的DirectX的3D标准,当年还存在着这两大标准的你死我活的较量呢,以SGI等公司为首的开放标准OpenGL的适用性越来越广,从PC到工作站、再到嵌入式无处不见其身影。而微软的DirectX的3D则只能在微软自己的产品上使用,看来,这个世界还是喜欢开放的标准,扯远了。
搞Chromium开发,不懂这个OpenGL说不过去,小菜今天就带着大家一起玩OpenGL。首先准备环境,由于对微软VS200N的动不动好几个G的大个头、以及微软封装的内心抵触,个人比较喜欢开源、个头不大的开发IDE,开源IDE当然有很多,名气很大的有Eclipse,名气小的叫啥我也忘记了。小菜喜欢一个叫CodeBlock的IDE,她符合我的品味--开源、小巧还跨多个操作系统,无论你在Windows还是Linux,都是一致的体验,想起来都有点小激动。下面是她的界面,是不是很好很强大?

以下是它的官网:http://www.codeblocks.org/
玩OpenGL,我们需要新建GLUT项目:

各种各样的OpenGL支持库,比如glew和他们的头文件,我把它放到这里了:http://d.download.csdn.net/down/2560229/ssagnn23
大家可以一股脑的把.dll文件放到Windows/system32目录下,而.lib和.a统统放到codeblock/mingw/lib目录下,头文件统统放到codeblock/mingw/include/GL目录下。
下一篇文章我开始玩一个最简单的多边形
第一时间获得博客更新提醒,以及更多技术信息分享,欢迎关注个人微信公众平台:程序员互动联盟(coder_online),扫一扫下方二维码或搜索微信号coder_online即可关注,我们可以在线交流。

小菜鸟带着梦想学chromium的更多相关文章
- 小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码)
小姐姐带你一起学:如何用Python实现7种机器学习算法(附代码) Python 被称为是最接近 AI 的语言.最近一位名叫Anna-Lena Popkes的小姐姐在GitHub上分享了自己如何使用P ...
- 小丁带你走进git的世界三-撤销修改
一.撤销指令 git checkout还原工作区的功能 git reset 还原暂存区的功能 git clean 还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...
- 小丁带你走进git的世界二-工作区暂存区分支
小丁带你走进git的世界二-工作区暂存区分支 一.Git基本工作流程 1.初始化一个仓库 git init git clone git仓库分为两种情况: 第一种是在现有项目或目录下导入所有文件到 ...
- 小丁带你走进git世界一-git简单配置
小丁带你走进git世界一-git简单配置 1.github的简单配置 配置提交代码的信息,例如是谁提交的代码之类的. git config –global user.name BattleHeaer ...
- 三石推荐!把 Bootstrap 小清新带回家!
无敌传送门:http://fineui.com/demo_pro/default.aspx?theme=bootstrap1&menu=accordion 喜欢就来赞一个! 把麻烦留给三石 ...
- 小丁带你走进git的世界三-撤销修改(转)
一.撤销指令 git checkout还原工作区的功能 git reset 还原暂存区的功能 git clean 还没有被添加进暂存区的文件也就是git还没有跟踪的文件可以使用这个命令清除他们 g ...
- 微信小程序,前端大梦想(六)
微信小程序,前端大梦想(六) 微信小程序之联合百度API实现定位 定位功能对于我们都不陌生,在移动端的应用中更是不可或缺的功能,小程序中也提供了对应的API帮助我们完成定位的实现,但是目前小程序的定位 ...
- 一个有趣的小例子,带你入门协程模块-asyncio
一个有趣的小例子,带你入门协程模块-asyncio 上篇文章写了关于yield from的用法,简单的了解异步模式,[https://www.cnblogs.com/c-x-a/p/10106031. ...
- Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
测试场景: 模拟并发100个user,在TesterHome 站内搜索VV00CC 添加线程组 添加HTTP信息头管理器 添加HTTP Sampler 填写HTTP Sampler中的信息 添加监听器 ...
随机推荐
- SQL with(unlock)与with(readpast) (转)
所有Select加 With (NoLock)解决阻塞死锁,在查询语句中使用 NOLOCK 和 READPAST 处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK 或者 READPAS ...
- 安装nodejs和grunt以后出现 /usr/bin/env: node: No such file or directory
安装完成以后需要执行此命令 sudo ln -s /usr/bin/nodejs /usr/bin/node
- 无线网卡的查看与配置——iw,iwconfig,ethtool
摘要:在linux上,我们经常需要把一台笔记本设置成一个共享wifi上网的路由器.如果我们需要把本机配置成一台无线AP,就需要查看网卡的相关信息和进行对应配置.其中iw.iwconfig和ethtoo ...
- AlarmDemo-with-Database
https://github.com/anuj7sharma/AlarmDemo-with-Database
- 即时通信(RPC)的Rtmp实现--配置篇
http://flexman.blog.sohu.com/129838570.html http://flexman.blog.sohu.com/130007574.html step 1: 首先要确 ...
- iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果
8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...
- png图片那点事
PNG图片格式现在包含三种类型: 1.PNG8 256色PNG的别名 2.PNG24 全色PNG的别名 3.PNG32 全色PNG的别名 基本上PNG32就是PNG24,但 ...
- Linux中断(interrupt)子系统之一:中断系统基本原理 (图解)
http://blog.csdn.net/droidphone/article/details/7445825
- Android实现数据存储技术
转载:Android实现数据存储技术 本文介绍Android中的5种数据存储方式. 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用Shar ...
- 配置apache虚拟主机的实例总结
如何实现apache虚拟主机配置. 1.基于ip地址的虚拟主机Listen 80<VirtualHost 172.20.30.40> DocumentRoot /home/httpd/ht ...