cmake 语法入门

2024-08-17
阅读 13 分钟
575
其中,通过 cmake_minimum_required 方法指定 CMake 使用版本,通过 project 指定工程名。而 add_executable 就是指定最后编译的可执行文件名称和需要编译的 cpp 文件,如果工程很大,有多个 cpp 文件,那么都要把它们添加进来。定义了 CMake 文件之后,就可以开始编译构建了。CMake 在构建工程时会生成许多临时文件,避...

Android声音播放与录制

2024-08-16
阅读 9 分钟
3.7k
STREAM的意思是由用户在应用程序通过write方式把数据一次一次得写到audiotrack中。这个和我们在socket中发送数据一样,应用层从某个地方获取数据,例如通过编解码得到PCM数据,然后write到audiotrack。这种方式的坏处就是总是在JAVA层和Native层交互,效率损失较大。

vscode开发android ndk的环境配置

2024-08-16
阅读 8 分钟
4.6k
最近公司新需求,要求用C/C++实现部分核心代码,打包成静态库跨平台(Android和iOS)使用。 作为Android开发出身的C/C++老白程序员兴奋不已(又可以开心的学习niubility的C/C++了),但之前写JNI代码的集成环境都是Android Studio,最后打包生成的so库也是面向Android平台的。 有什么IDE适合这种跨平台开发的呢?请教了...

NDK 编译常见问题

2024-08-15
阅读 5 分钟
3.8k
depends on undefined modules问题: {代码...} 解决方案:Android.mk中增加APP_ALLOW_MISSING_DEPS=trueshared library text segment is not shareable问题: {代码...} 解决: {代码...} shared library text segment is not shareablehas text relocations问题: {代码...} 解决:方案一This issue could be solved by chec...

Android线程思考

2024-08-15
阅读 6 分钟
3.6k
在编程中我们经常遇到多线程相关的问题,记得刚工作的时候对线程没有太多概念,只知道new Thread()run函数中是新的线程,函数多调用几层,特别是一些别人的回调函数中,就忽略了线程引起的并发问题,产生了并发修改异常的崩溃。今天总结一些线程相关的知识。

Android gradle 系列之配置

2024-08-14
阅读 9 分钟
4.2k
buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。

OpenGL PBO介绍

2024-08-14
阅读 7 分钟
4.1k
总结:虽然使用一个PBO但是效果改变不是很明显,因为单个PBO传输还是需要等待的,假如使用2个pbo,这样错开接收就会使效率大大提高,请看下篇使用2个PBO速度慢的问题。

FBO与PBuffer区别

2024-08-13
阅读 14 分钟
3.8k
渲染管线的最后一个阶段是到帧缓冲区。大部分OpenGL所做的渲染操作都是在默认的帧缓冲中进行的,这个默认的帧缓冲是我们创建一个Surface时自动创建和配置好的,默认情况下,我们使用OpenGL ES使用的窗口系统提供的帧缓冲区,这样绘制的结果是显示到屏幕上,然而实际中有很多情况并不需要渲染到屏幕上,那么使用窗口系统...

OpenGL Frame Buffer Object(FBO)介绍

2024-08-13
阅读 26 分钟
647
Update: Framebuffer object extension is promoted as a core feature of OpenGL version 3.0, and is approved by ARB combining the following extensions;

OpenGL 之EGL API 介绍

2024-08-12
阅读 9 分钟
4.1k
EGL 是 OpenGL ES 和底层 Native 平台视窗系统之间的接口。OpenGL ES 本质上是一个图形渲染管线的状态机,而 EGL 则是用于监控这些状态以及维护 Frame buffer 和其他渲染 Surface 的外部层。EGL提供如下机制:

OpenGL 之 EGL 源码分析

2024-08-12
阅读 17 分钟
4.1k
frameworks/native/opengl/libs/EGL:Android EGL框架,负责加载OpenGL函数库和EGL本地实现。

OpenGL 混色实现

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

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

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

OpenGL入门三:变换原理简介

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

OpenGL入门二:绘制三角形

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

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

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

FFMPEG Mac版本编译

2024-08-09
阅读 7 分钟
628
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

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

MacOS 中Boost的安装和使用

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

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

2024-08-06
阅读 1 分钟
340
90年代时的计算机都是两套图形系统:一套是普通软件窗口API9,Windows上不论是MFC还是ATL9背后都是gdi32.dl,Linux无论GTK还是QT背后都是X,后者用CPU渲染出一张图片,然后送入显存,显示适配器把显存转成VGA信号输出;另一套是游戏,他们会调用DirectX/OpenGL,后者用GPU渲染出3D图像,然后直接进显存输出。当时玩游戏进...

Docker 环境搭建

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

Centos中supervisor应用

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

Centos 安装Nginx

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

Centos 安装 Gitlab

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

sql 常见query

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

redis 环境搭建

2024-08-01
阅读 6 分钟
286
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环境搭建

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

mongodb环境搭建

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

Android自动化测试四 UiAutomator用法

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

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

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