OpenGL 之 EGL 源码分析

8 月 12 日
阅读 17 分钟
861
frameworks/native/opengl/libs/EGL:Android EGL框架,负责加载OpenGL函数库和EGL本地实现。

OpenGL 混色实现

8 月 11 日
阅读 4 分钟
361
混合就是把两种颜色混在一起。具体一点,就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。假设我们需要绘制这样一个场景:透过红色的玻璃去看绿色的物体,那么可以先绘制绿色的物体,再绘制红色玻璃。在绘制红色玻璃的时候,利用“混合”功能,把将要绘制上去的红色和原来的...

OpenGL入门一:基础知识及概念

8 月 11 日
阅读 2 分钟
817
OpenGL:open graphic library,即开发图形库。它被定义为“图形硬件的一种软件接口”。实质上是3D图形和模型库,它具有高度可移植性,并且具有非常快的速度。可以创建优雅漂亮的3D图形,具有出色的视觉质量。并且速度远快于光线追踪仪或软件渲染引擎。
封面图

OpenGL入门三:变换原理简介

8 月 10 日
阅读 2 分钟
812
我们现实世界是三维的,但是展示到屏幕上只能是二维的,我们要用二维表示三维就必须解决一系列问题,涉及到多个坐标的转换,比如物体的坐标,观察者相机的坐标,渲染最终展示到屏幕的坐标等等。

OpenGL入门二:绘制三角形

8 月 10 日
阅读 3 分钟
388
本文我们基于最基础,最简单的OpenGL API,最终实现三角形的绘制(基于OpenGL 1.0 Java接口)。本文只对OpenGL相关接口使用进行介绍,深入原理后续逐步剖析。

Android系统图形栈(一) OpenGL 介绍

8 月 9 日
阅读 1 分钟
408
OpenGL基本概念OpenGL的结构可以从逻辑上划分为下面3个部分:图元(Primitives)缓冲区(Buffers)光栅化(Rasterize)图元(Primitives)在 OpenGL 的世界里,我们只能画点、线、三角形这三种基本图形,而其它复杂的图形都可以通过三角形来组成。所以这里的图元指的就是这三种基础图形:点:点存在于三维空间,坐标用(x,y,z)表...
封面图

FFMPEG Mac版本编译

8 月 9 日
阅读 7 分钟
410
One is to build it yourself. Compiling on Mac OS X is as easy as any other *nix machine, there are just a few caveats(警告). The general procedure is get the source, then ./configure <flags>; make && sudo make install, though specific configure flags are possible.
封面图

Mac 下生成core dump

8 月 7 日
阅读 1 分钟
313
使用ulimit -c查看ulimit设置,显示unlimited表示开启,显示0表示关闭,通过ulimit -c unlimited打开设置;但是这个只在当前窗口有效果。如果需要变成系统全局设置。就需要去改/etc/profile文件,打开,然后加上ulimit -c unlimited就可以了,这样当产生Crash的时候就会自动产生dump文件。
封面图

MacOS 中Boost的安装和使用

8 月 7 日
阅读 6 分钟
537
Boost是一个功能强大、构造精巧、跨平台、开源并且完全免费的C++程序库,有着“C++‘准’标准库”的美誉,值得每位C++程序员学习使用。
封面图

Linux 为何不把图形用户界面写入内核?

8 月 6 日
阅读 1 分钟
192
早先是没能力,之后是没必要,现在是不应该先插一句,现代Windows9的图形也不在内核里,只是还保留一组兼容。90年代时的计算机都是两套图形系统:一套是普通软件窗口API9,Windows上不论是MFC还是ATL9背后都是gdi32.dl,Linux无论GTK还是QT背后都是X,后者用CPU渲染出一张图片,然后送入显存,显示适配器把显存转成VGA信...

Docker 环境搭建

8 月 6 日
阅读 8 分钟
288
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 ...

Centos中supervisor应用

8 月 4 日
阅读 4 分钟
668
supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。

Centos 安装Nginx

8 月 4 日
阅读 3 分钟
231
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。

Centos 安装 Gitlab

8 月 3 日
阅读 9 分钟
219
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 以后开始去除 LXC,转而使用自行开发的 ...
封面图

sql 常见query

8 月 3 日
阅读 7 分钟
255
如下数据库表: {代码...} 查询“001”课程比“002”课程成绩高的所有学生的学号 {代码...} 查询平均成绩大于60分的同学的学号和平均成绩 {代码...} 查询所有同学的学号、姓名、选课数、总成绩 {代码...} 查询姓‘李’的老师的个数 {代码...} 查询没有学过“叶平”老师可的同学的学号、姓名: {代码...} 查询学过“叶平”老师所教的...
封面图

redis 环境搭建

8 月 1 日
阅读 6 分钟
151
MAC环境安装安装首先是官网下载redis,下载 stable 版本,稳定版本。安装与编译:解压:tar zxvf redis-4.0.10.tar.gz移动到: mv redis-4.0.10 /usr/local/切换到:cd /usr/local/redis-4.0.10/编译测试 sudo make test,如果在第5步测试时报如下错:Executing test client: couldn't execute "src/redis-benchmark": no s...

mysql环境搭建

8 月 1 日
阅读 2 分钟
287
CentOS 7的默认yum仓库中并没有MySQL5.7,我们需要手动添加,好在MySQL官方提供了仓库的地址,所以我们能够比较简单地安装MySQL。如下是CentOS 7下MySQL5.7的安装。

mongodb环境搭建

7 月 31 日
阅读 14 分钟
208
Mongo之安装参考Centos1.下载安装包远程安装mongodb压缩包 {代码...} 2.解压缩安装包在/opt下创建modules文件夹 {代码...} 然后解压到这里: {代码...} 进入modules文件夹 {代码...} 重命名为mongodb {代码...} 3.创建数据库存放目录和日志存放目录将服务的数据存放在/opt/data目录下,需要创建db目录用于存放数据库文件,l...

Android自动化测试四 UiAutomator用法

7 月 31 日
阅读 6 分钟
1.2k
它是一个Android自动化测试框架,是谷歌在Android4.1版本发布时推出的一款用Java编写的UI测试框架。它只能用于UI也就是黑盒方面的测试。所以UiAutomator只能运行在4.1以后的版本中。其最大的特点就是可以跨进程操作,我们可以使用uiautomator框架提供的一些方便的API来对安卓应用进行一系列的自动化测试操作,如点击、滑...
封面图

Android自动化测试二 测试支持库

7 月 30 日
阅读 6 分钟
815
Android 测试支持库提供了大量用于测试 Android 应用的框架。此库提供了一组 API,让您可以为应用快速构建何运行测试代码,包括 JUnit 4 和功能性用户界面 (UI) 测试。您可以从 Android Studio IDE 或命令行运行使用这些 API 创建的测试。
封面图

Android自动化测试一 UiAutomator官方介绍

7 月 30 日
阅读 2 分钟
668
了解android测试需要查询android官方文档,android官方培训教程Getting Started with Testing介绍了android提供的测试类型,测试接口等,相较与网上总结的android自动化测试框架,官方文档显然分类更合理,定位更准确.
封面图

webrtc信令交互流程

7 月 29 日
阅读 2 分钟
233
上述序列中,WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实现。Stun服务器可以用google提供的实现stun协议的测试服务器(stun:stun.l.google.com:19302),Signal服务器则完全需要自己实现了,它需要在ClientA和ClientB之间传送彼此的SDP信息和candidate信息,ClientA和ClientB通过这些信息建立P2P连接来...
封面图

Webrtc线程模型

7 月 29 日
阅读 3 分钟
659
Boost:大而全,缺少一些可以直接上手的东西如线程消息队列,智能指针并非线程安全。QT core:非常好C++11:也需要线程消息队列,线程安全智能指针。chromium的base库:太大了当我看到webrtc的base时,非常惊讶的发现它正是我想要的,特点:
封面图

webrtc模块管理

7 月 28 日
阅读 4 分钟
161
对于实时音视频应用来讲,媒体数据从采集到渲染,在数据流水线上依次完成一系列处理。流水线由不同的功能模块组成,彼此分工协作:数据采集模块负责从摄像头/麦克风采集音视频数据,编解码模块负责对数据进行编解码,RTP模块负责数据打包和解包。数据流水线上的数据处理速度是影响应用实时性的最重要因素。与此同时,从...
封面图

webrtc sdp协议介绍

7 月 28 日
阅读 11 分钟
264
RFC3264: An Offer/Answer Model with the session Description Protocol(SDP),用来概述一个请求/响应模型
封面图

webrtc Android源码分析一

7 月 27 日
阅读 13 分钟
541
nativeCreateVideoSource初始化PeerConnectionFactory(pc/peerconnectionfactory) 创建PeerConnection方法中: {代码...} 构造PeerConnection对象pc,并调用初始化方法Initialize,Initialize中: {代码...} 调用CreateCall_w创建call对象: {代码...} 使用call对象以及PeerConnectionFactory中channel_manager(PeerConnectio...
封面图

webrtc 音频设备操作之opensl与jni

7 月 27 日
阅读 9 分钟
217
webrtc 音频设备操作之opensl与jni本节主要分享视频通话中android和ios上操作音频设备的方式,如调解音量大小,启用扬声器处理音频设备代码目录:src/modules/audio_device/ {代码...} 第一种方式就是直接调用Android或ObjectC的API,代码如下(WebRtcAudioTrack.java): {代码...} 通过调用Android提供的AudioManager类来操作...
封面图

TS文件结构解析

7 月 26 日
阅读 6 分钟
421
ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即"Transport Stream"的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。
封面图

webrtc代码管理工具gclient入门

7 月 26 日
阅读 10 分钟
224
google的chromium项目是用gclient来管理源码的checkout, update等。 gclient是google专门为这种多源项目编写的脚本,它可以将多个源码管理系统中的代码放在一起管理。甚至包括将Git和svn代码放在一起。
封面图

MP4文件结构解析

7 月 25 日
阅读 4 分钟
380
目前MP4的概念被炒得很火,也很乱。最开始MP4指的是音频(MP3的升级版),即MPEG-2 AAC标准。随后MP4概念被转移到视频上,对应的是MPEG-4标准。而现在我们流行的叫法,多半是指能播放MPEG-4标准编码格式视频的播放器。但是这篇文章介绍的内容跟上面这些都无关,我们要讨论的是MP4文件封装格式,对应的标准为ISO/IEC 1449...
封面图