OpenGL
Lammyzp
这个作者很懒,什么都没留下…
展开
-
FFMpeg opengl显示解码avframe
FFmpeg解码出来avframe,但显示很容易出现乱码,因为为了计算的方便,ffmpeg解码出来的数据,总视根据系统处理器或者系统来补齐为 64、32、16的倍数。这也是我们显示乱码的问题所在。问题比如我显示抖音上的视频的宽为368x640, 解码的帧率avFrame,下面是avframe的一些成员变量:avFrame->format = 0 // 表示是 yuv420p的数据...原创 2019-04-26 09:55:46 · 3438 阅读 · 3 评论 -
shader内置变量和函数
转自: https://blog.csdn.net/wcl0617/article/details/51496929内置函数radians(degree) : 角度变弧度;degrees(radian) : 弧度变角度;sin(angle), cos(angle), tan(angle)asin(x): arc sine, 返回弧度 [-PI/2, PI/2];acos(x): arc cosine,返回弧度 [0, PI];atan(y, x): arc tangent, ...转载 2020-08-13 23:46:00 · 565 阅读 · 0 评论 -
pkm与png的相互转化
利用Mali Texture Compression Tool制作自己的png2pkm 和 pkm2png工具1、下载安装,官网;如果网不好,可百度云盘2、png2pkm 写一个windows脚本,放在F:\Mali compression tool\bin下:@echo off@echo start getListset /p a=please input png dictionary...原创 2019-12-01 00:48:21 · 9022 阅读 · 2 评论 -
手游性能优化之深入理解Texture Compression
http://gad.qq.com/article/detail/7154875一、引子 手游项目开发日常里,经常有美术同学搞不清Photoshop制图软件与Unity3D游戏引擎之间的图片assets流转逻辑,在工作输出时经常出现如下疑问:1、要JPG的,还是要PNG的?2、JPG的要压存为多高质量的?3、PNG的还要压?引擎不是自动处理的么?4、为毛非要正方形的?我这...转载 2019-11-30 23:33:40 · 489 阅读 · 0 评论 -
opengl 顶点坐标和sampler2D纹理坐标
在利用非固定管线进行纹理渲染的时候,经常要用到纹理和顶点坐标的映射关系,这里从三维角度介绍下二维的纹理坐标映射:顶点坐标:首先得明确:顶点坐标是在世界坐标系上(可参考:从渲染过程来理解opengl坐标系和坐标变换投影),这里的世界坐标系投影的屏幕坐标系(可参考:从渲染过程来理解opengl坐标系和坐标变换投影)上, x、y如上图所示,z正方向是从屏幕向外,人眼的位置则是在原点(0...原创 2019-04-26 13:13:07 · 10329 阅读 · 2 评论 -
android samplerExternalOES 纹理
samplerExternalOES 的纹理映射上一章节讲解了opengl顶点坐标与sampler2D坐标,而samplerExternalOES 是android用来渲染 相机数据。但它也存在一个问题,android的后置相机的预览的图像是顺时针旋转90°的,而相对于前置相机则是逆时针旋转90°的,如果想要跟照镜子一样的模式,自拍则还要左右对换。后置摄像头后置摄像头只是需要将纹理旋转...原创 2019-04-28 11:34:26 · 6653 阅读 · 0 评论 -
android glSurfaceview 底层创建EGL渲染环境
之前 android studio搭建简单jni层的opengl开发框架讲到的是在上层render的三个回调函数中写jni函数,从而在jni层调用opengl的绘制,但是在做播放器的时候,需要用opengl来渲染 每一帧,而底层解码后,再渲染,将渲染放在底层,这样播放器的整个框架都在底层,上层只是UI的一些显示操作,而且 如果在render的onFrame中直接来显示帧,在暂停或者seek的时候由...原创 2019-04-25 18:02:57 · 1662 阅读 · 3 评论 -
android openglse实现滤镜九宫格
opengl的渲染之前讲过很多,包括FBO等常用的技术(可参考我的博客:fbo),今天解决之前的一个小疑问:手机系统相机中,九宫格的滤镜选择是如何实现的,今天闲暇就实现起来看看,同时开放出来之前私有的相机项目:LammyOpenglCamera原理:先利用fbo,将相机数据绘制到一个纹理当中,然后将纹理设置到不同的filter,利用 glViewport来确定绘制窗口位置,然后利用不同的filt...原创 2019-06-13 16:20:34 · 934 阅读 · 1 评论 -
yuv格式介绍与opengl 显示 yuv数据
目录yuv数据介绍:yuv444yuv420yuv422Opengl显示yuv数据提取数据创建纹理shader显示yuv数据介绍:yuv数据存储主要分3大种:yuv420、yuv444、yuv422图中:空心圆表示 一个uv, 实心圆表示一个y。下面对三种格式进行一个解释:cb代表u,cr代表v。大部分数据格式再 ffmpeg的枚举类...原创 2019-04-26 11:45:49 · 7733 阅读 · 2 评论 -
opengl fbo 离屏渲染
之前的博客opengl 离屏渲染,实现相机的实时滤镜讲到过离屏渲染,主要是android层的应用,这里在jni层来实现,并来讲解下原理,以及和android层的不同的地方。#extension GL_OES_EGL_image_external : requireuniform samplerExternalOES vTexture;opengl离屏渲染平时我们设置shade...原创 2019-03-28 20:05:37 · 3631 阅读 · 0 评论 -
glFlush 和 glFinish的区别
cpu到 gpu之间的通讯过程c层写入 gl的一些gpu的操作时,这些指令会在驱动层,驱动层会将系统 从 protect模式切换到unprotect模式,从而将指令传输给gpu,gpu来执行。但切换操作系统模式会很消耗性能,因此,driver层开辟一个buffer,用来存储gl的命令,等存储到一定后一起送往gpu,以来提高性能,如下图:glflush操作glflush操作是将...原创 2019-03-27 09:31:21 · 1407 阅读 · 0 评论 -
android opengl 实现相机的实时滤镜
上篇文章已经讲到了相机的实时预览,现在讲讲相机的实时滤镜,相机实时滤镜,其实就是根据上篇文章相机实时预览的基础上,在着色器中添加图像处理的算法。上篇文章给出了最基本的片着色器:#extension GL_OES_EGL_image_external : requireprecision mediump float;varying vec2 textureCoordinate;//unif...原创 2018-12-06 17:03:15 · 1567 阅读 · 0 评论 -
opengl 离屏渲染,实现相机的实时滤镜
android 相机预览中讲到了,我们使用的是:samplerExternalOES ,这个不能自由的变化预览的尺寸,还会出现卡顿现象,为了克服这个问题,也是采用网上的一些人的解决方案,既将samplerExternalOES 转化为 sampler2D,然后再进行渲染。这里我们还是以相机预览为基础,这里我们最终将 texture不再渲染到屏幕,而是渲染到buffer中,因此我们在draw 之前...原创 2018-12-06 17:27:40 · 2245 阅读 · 0 评论 -
android studio搭建简单jni层的opengl开发框架
目录1、上层的创建2、jni层的配置创建头文件ggl.hjni函数接口assetsManager jni层读取文件utils 创建纹理,程序,连接程序工具类scene.h 里实现真正的绘制,glm库的导入cmake中配置环境app gradle 配置着色器demo下载opengl学习了好久了,之前一直再java层开发,但随着对性能的要求,一些...原创 2019-03-21 14:52:11 · 3165 阅读 · 0 评论 -
从渲染过程来理解opengl坐标系和坐标变换投影
世界坐标系世界坐标系,以人站立的位置为原点,右方为x 正方形,头顶为y的正方形,z的正方形为脑后(即人看向z的负方向)。如下图 因此,在用opengl绘制的图像时,加载的模型文件其实都是在原点的位置,在绘制游戏或者模型的时候就要将这些模型放置在不同的世界坐标系位置上,即称为绝对坐标。绝对坐标绝对坐标 就是我们要绘制的物体在世界坐...原创 2019-03-22 18:51:16 · 1838 阅读 · 0 评论 -
glm来实现的mvp矩阵变换实现opengl渲染模型
glm库是很强大的数学矩阵库,这里就不介绍了,下面利用这个库来实现opengl的模型渲染。上一篇从渲染过程来理解opengl坐标系和坐标变换投影讲过了,opengl渲染图像模型的过程,这篇主要讲解使用glm库来实现这个过程。这篇文章demo主要渲染一个地球和一个地面,然后旋转地球,移动相机等操作。材料准备1、渲染的模型的cube文件,里面存储的是地球的vertextPoints(vt)...原创 2019-03-22 19:55:05 · 1108 阅读 · 0 评论 -
opengl glm库 改变mvp矩阵 实现3D漫游
上一篇glm来实现的mvp矩阵变换实现opengl渲染模型,讲到了如何利用glm库实现mvp矩阵,这篇主要讲解下,我们如何利用glm库的平移、旋转矩阵实现一个简单的3d漫游的效果。原理移动camera位置 和 视点 按照一个方向移动。这里主要是要修改视觉矩阵 viewMatrix// 相当于人移动,那就是 视点 和 相机位置,按照 一定方向 移动void translat...原创 2019-03-22 20:14:56 · 875 阅读 · 0 评论 -
opengl 光照模型和光照纹理贴图
上篇文章我们讲到了 opengl的 mvp矩阵,以及在三维世界里漫游的方法,与实现,这篇讲解下,opengl的光照模型。光基础介绍环境光ambient: 就是环境周边物体反射找到物体上的光漫反射光diffuse: 物体表面漫反射出去的光镜面反射光specular:光束找到物体表面反射的光当光照射物体的时候我们需要设置:物体反射光设置:物体所处环境光物体的漫反射光(...原创 2019-03-26 15:56:46 · 1914 阅读 · 0 评论 -
opengl 不同光源下三种反射光的计算
光源种类平行光源:如太阳光源,类似于灯源在无穷远处,照射物体的各个地方光照强度相同,光照方向也相同。点光源:离物体有限距离,且灯光会随着距离衰减,物体表面光照方向不同。聚光灯:如 手电筒照在一个圆圈上,周围衰减。(这里光照计算暂不介绍)环境光ambient上一篇给大家讲了,opengl光照模型得设置 灯源环境光 材质环境光。物体反射的环境光为这两者的乘积, 2种光源计算方法一...原创 2019-03-26 20:10:03 · 1347 阅读 · 0 评论 -
android opengl camera2 实现相机的实时预览 以及 点坐标samplerExternalOES的纹理坐标
相机一直是我的心病,花了几周的时间学习了下opengl se。并利用opengl来实现android平台下的实时预览。,真的硬着头皮啃 网上的大神的代码,没有什么注解,确实有点苦逼,闲话不说了现在做好笔记 ,方便回顾。相机的预览首先回到相机的预览,我们知道camera2,利用surfacetexture 可以在非预览情况下获得相机的数据,,然后利用与surfacetexture同一个textu...原创 2018-12-06 16:39:58 · 4586 阅读 · 0 评论