首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Android OpenGL开发实践 - 基于OpenGL ES 2.0的Android相机实时图片涂鸦实现思路

这篇文章将给大家讲解如何在Android系统上基于OpenGL ES 2.0来实现相机实时图片涂鸦效果,所涂内容跟随人脸出现、消失、移动、旋转及缩放,在这里,我们假设您: 已经搭建好一个相机框架,能够获得相机的预览图像...其中IMAGE_POSITION_VERTEX是纹理图片的位置坐标数组,它的作用是确定要把纹理图片画在屏幕的什么地方,它里面的坐标值是对应世界坐标系中的坐标值,IMAGE_TEXTURE_VERTEX是纹理图片本身的顶点坐标数组...,它的作用是确定要画这个纹理图片的什么部分,如下图所示: ?...然后在onDrawFrame中绘制图片: ? 至此,我们有了一个简单的框架,可以在相机预览界面绘制一个图片了。...为了解决这个问题,这里引入一个概念叫“锚点”,所谓锚点就是纹理图片上用于对准的点,如下图所示: ?

7K130

OpenGL】九、OpenGL 绘制基础 ( OpenGL 状态机概念 | OpenGL 矩阵概念 )

文章目录 一、OpenGL 状态机概念 二、OpenGL 矩阵概念 上一篇博客 【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为...OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 进行了 OpenGL 渲染环境初始化 ; 本篇博客简单介绍 OpenGL 中的一些理论概念 ; 一、OpenGL 状态机概念 ----...OpenGL 是一个状态机 , 其中包含了很多状态 , 简单列举下面的几项 : OpenGL 中的 矩阵 Matrix , 包含了 投影 ( Projection ) 矩阵 , 模型 ( Model...绘制 3D 图形时 , 就会读取当前的状态机参数 , 利用这些状态机进行绘制 , 而我们就在绘制之前设置上述一系列的状态机 , 确保 OpenGL 绘制按照我们设想的进行 ; 在上一篇博客 【OpenGL...】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★ 中Windows 窗口创建完成后

4K00

OpenGL(五)-- OpenGL中矩阵的变换OpenGL(五)-- OpenGL中矩阵的变换

OpenGL(五)-- OpenGL中矩阵的变换 前言 照常提出几个问题,希望通过阅读可以找到答案。 对物体3维的2维投影进行位移,有几种方式? 模型视图矩阵代表了什么?...确立透视投影需要的参数: aspect(远/近裁切面的宽高比,它本身也是视口) , near(近裁切面位置) , far(远裁切面位置),投影角度,视口位置 以上图片都出自:_superhuihui-OpenGL...中涉及到的矩阵变换 在OpenGL中矩阵的计算方式 // 矩阵计算 m3dMatrixMultiply44(ModelViewMatrix(模型视图矩阵),ViewMatrix(观察者矩阵), ModelMatrix...如果想要了解具体矩阵是如何计算的:3D数学 矩阵知识 矩阵栈 在计算时会发现这种计算会导致物体唯一无法重置,为了解决这种问题OpenGL提出了矩阵栈的概念。栈这个概念应该是很熟悉了吧!...以上图片出自:凡几多 简单阐述一下过程: 1. 压栈(PUSH操作)一个单元矩阵,初始化之后本身已近就存在一个单元矩阵。 ? 通过Xcode来查看矩阵中的入内,需要变换为4行4列来看。 2.

2.1K10

OpenGL入门

.视频、图形、图片处理 .2D/3D游戏引擎开发 .科学可视化 .医学软件开发 .CAD(计算机辅助技术) .虚拟实境(AR,VR) .AI(人工智能) OpenGL本身并不是一个API,它仅仅是一个由...状态机 OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。...shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); 纹理 纹理是一个2D图片...首先需要输入生成纹理的数量, 然后把它们储存在unsigned int数组中,就像其他对象一样,我们需要绑定它,让之后任何的纹理指令都可以配置当前绑定的纹理, 纹理绑定之后,我们可以使用前面载入的图片数据生成一个纹理了...这需要使用到一些数学知识,这里可以参考OpenGL官网译文 其他3D术语: 2D+透视 = 3D 纹理贴图:将纹理图片附着到你绘图的图像上 混合:颜色混合效果 渲染:表示计算机从模型创建最终图像的过程

2.3K40

OpenGL入门

.视频、图形、图片处理 .2D/3D游戏引擎开发 .科学可视化 .医学软件开发 .CAD(计算机辅助技术) .虚拟实境(AR,VR) .AI(人工智能) OpenGL本身并不是一个API,它仅仅是一个由...状态机 OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。...shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); 纹理 纹理是一个2D图片...首先需要输入生成纹理的数量, 然后把它们储存在unsigned int数组中,就像其他对象一样,我们需要绑定它,让之后任何的纹理指令都可以配置当前绑定的纹理, 纹理绑定之后,我们可以使用前面载入的图片数据生成一个纹理了...这需要使用到一些数学知识,这里可以参考OpenGL官网译文 其他3D术语: 2D+透视 = 3D 纹理贴图:将纹理图片附着到你绘图的图像上 混合:颜色混合效果 渲染:表示计算机从模型创建最终图像的过程

1.8K40

OpenGL入门

.视频、图形、图片处理 .2D/3D游戏引擎开发 .科学可视化 .医学软件开发 .CAD(计算机辅助技术) .虚拟实境(AR,VR) .AI(人工智能) OpenGL本身并不是一个API,它仅仅是一个由...状态机 OpenGL自身是一个巨大的状态机(State Machine):一系列的变量描述OpenGL此刻应当如何运行。OpenGL的状态通常被称为OpenGL上下文(Context)。...shaderProgram, fragmentShader); glLinkProgram(shaderProgram); glUseProgram(shaderProgram); 纹理 纹理是一个2D图片...首先需要输入生成纹理的数量, 然后把它们储存在unsigned int数组中,就像其他对象一样,我们需要绑定它,让之后任何的纹理指令都可以配置当前绑定的纹理, 纹理绑定之后,我们可以使用前面载入的图片数据生成一个纹理了...这需要使用到一些数学知识,这里可以参考OpenGL官网译文 其他3D术语: 2D+透视 = 3D 纹理贴图:将纹理图片附着到你绘图的图像上 混合:颜色混合效果 渲染:表示计算机从模型创建最终图像的过程

1.5K60

OpenGL ES实践教程(九)OpenGL与视频混合

前言 前面的实践教程: OpenGL ES实践教程1-Demo01-AVPlayer OpenGL ES实践教程2-Demo02-摄像头采集数据和渲染 OpenGL ES实践教程3-Demo03-...Mirror OpenGL ES实践教程4-Demo04-VR全景视频播放 OpenGL ES实践教程5-Demo05-多重纹理实现图像混合 OpenGL ES实践教程6-Demo06-全景视频获取焦点...OpenGL ES实践教程7-Demo07-多滤镜叠加处理 OpenGL ES实践教程8-Demo08-blend混合与shader混合 其他教程请移步OpenGL ES文集。...核心思路 用AVFoundation处理视频合并的时间轴关系(混合规则),用OpenGL ES处理两个视频图像混合。...OpenGL ES的文集有将近半年没更新,一部分原因是新的工作比较忙碌,一部分原因是觉得需要沉淀一段时间。

2.9K70

OpenGL入门 (一)

/85262650 7th Edition of OpenGL SuperBible https://github.com/openglsuperbible/sb7code openGL 不错的两个教程...当使用OpenGL的core-profile开发时,OpenGL迫使我们使用最新的技术。...每当我们尝试使用OpenGL的弃用功能时,OpenGL会提示出了一个错误并停止运行 OpenGL的客户端和服务器模式   在一台工作站上,绘图的整个过程不过是把数据从系统的内存中复制到图形卡中,然后绘制出图形...但openGL是按照客户机-服务器模式设计的。我们认为可以将整个OpenGL系统分为两部分,一部分是客户端,它负责发送OpenGL命令。一部分是服务端,它负责接收OpenGL命令并执行相应的操作。...对于个人计算机来说,可以将CPU、内存等硬件,以及用户编写的OpenGL程序看做客户端,而将OpenGL驱动程序、显示设备等看做服务端。

76120

OpenGL ES简介

渲染的基础知识 使用OpenGL ES,一般包括如下几个步骤:   (1)EGL初始化   (2)OpenGL ES初始化   (3)OpenGL ES设置选项&绘制   (4)OpenGL ES资源释放...不同设备的窗口系统千变万化,但是OpenGL ES提供的API却是统一的,所以EGL需要协调当前设备的窗口系统和OpenGL ES。下面EGL初始化的代码我是用C++写的,然后通过jni调用。...ES渲染原理 首先来看一个OpenGL ES2.0的渲染原理图。...,比如:如果一个Opengl ES帧缓冲窗口被其他窗口遮住了,窗口系统将决定被遮住的像素不属于当前Opengl ES的context,因此也就不会被显示。.../1504.html OpenGL ES 2.0可编程管道 http://www.cnblogs.com/listenheart/p/3292672.html OpenGL ES 2.0编程基础 http

1.9K70

OpenGL (二)--OpenGL中那些晦涩难懂的名词、动词解析OpenGL (二)--OpenGL中那些晦涩难懂的名词、动词解析

更加严谨的说是GPU必须提前满足OpenGL规范才可以。 OpenGL本身是规范,但是想要在具体的平台、语言下使用还是需要有对应的API实现的。所以说我们用是OpenGL的实现。...OpenGl上下文 通过资料知道OpenGl上下文是一个巨大的状态机,其中保存着各种OpenGl工作所需的各种参数以及状态。...上下文3) b --> a[GPU] d --> a[GPU] f --> a[GPU] 渲染 将可以用于展示的图片、视频、可视化控件,绘制到屏幕上的过程,其中还包含了图片的编码、解码工作。...管线 从图片到显示在屏幕上需要一个过程。管线就是规定了整个过程的每一步,并且需要严格遵守。最贴切的比喻就是工厂里的流水线,很好理解。 ? 这就是OpenGL中一个完成的管线流程。...片元着色器 可以自定义开发的着色器,可以对每一个像素点进行编程,比如说图片的锐化度、亮度、饱和度调整等。

1K20

OpenGL 抗锯齿

这节教程我们会展开讨论这个MSAA技术,它是OpenGL内建的。...在前面的图片中4个样本中只有2个被覆盖,像素的颜色将以三角形的颜色进行平均化,颜色同时也被储存到其他2个采样点,最后生成的是一种浅蓝色。 结果是,颜色缓冲中所有基本图形的边都生成了更加平滑的样式。...OpenGL中的MSAA 如果我们打算在OpenGL中使用MSAA,那么我们必须使用一个可以为每个像素储存一个以上的颜色值的颜色缓冲(因为多采样需要我们为每个采样点储存一个颜色)。...大多数OpenGL驱动,多采样默认是开启的,所以这个调用有点多余,但通常记得开启它是个好主意。这样所有OpenGL实现的多采样都开启了。...因为实际的多采样算法在OpenGL驱动光栅化里已经实现了,所以我们无需再做什么了。

2.7K20

OpenGL投影矩阵

这是关于OpenGL投影矩阵的一篇译文,原文在这里....概览(Overview) 电脑显示屏是一个2D平面,为了能够在这个2D平面上显示OpenGL渲染的3D场景,我们必须将3D场景当作2D图像投影到这个2D平面(计算机屏幕)上.GL_PROJECTION...这里我们需要注意的一点就是 : GL_PROJECTION 矩阵同时整合了裁剪(视锥体剔除)和标准化设备坐标(NDC)变换的功能(译注:这里不是指 GL_PROJECTION 矩阵本身整合了这些功能,而是指 OpenGL...接着, 如果发生了裁剪, OpenGL 会重新构建发生裁剪的多边形边缘....这里需要注意的是,观察空间是在右手坐标系下(OpenGL 使用右手坐标系)定义的,但是 NDC 却是在左手坐标系下定义的.换句话说就是,观察空间中的摄像机是指向 -Z 轴的,但是在 NDC 中,摄像机指向的却是

1.6K00
领券