![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
opengles
文章平均质量分 53
鱼儿-1226
离家千里,出了地铁口,万家灯火。
多年从事于音视频相关直播行业,使用 windows / linux系统,熟练使用c++、c#、opengl、unity3d、UE、cocos、ffmpeg、directshow、obs、鼠标键盘钩子、汇编、逆向(爬虫) 等。
展开
-
OpenGL ES EGL eglCreatePbufferSurface
EGL原创 2023-02-24 11:18:06 · 417 阅读 · 0 评论 -
OpenGLES从2.0到3.0的变化
1.在着色器文件中添加 #version 300 es 表明使用3.0版本,如果不添加则使用默认2.0版本。注意使用opengles3.0的API的时候必须添加 #version 300 es 。2.GLES 3.0中将GLES 2.0的 attribute 属性改成了 in 属性,顶点着色器的 varying 类型改成 out 类型,片段着色器的 varying 类型改成了 in 类型。3.GLES 3.0 不支持gl_FragColor, 需要使用out vec4 vFragCo...原创 2021-07-09 14:14:10 · 1192 阅读 · 2 评论 -
openGLES float 类型 换换 int 类型
float a=2.0; int b=int(a);原创 2021-07-06 15:46:26 · 504 阅读 · 0 评论 -
Android OpenGL ES 引入EGL
EGL既然做平台和OpenGL ES的中间件那EGL做的就肯定是和平台息息相关的事:创建绘图窗口 也就是所谓的FrameBuffer,FrameBuffer可以显示到屏幕上(SurfaceView) 创建渲染环境(Context上下文) 渲染环境指OpenGL ES的所有项目运行需要的数据结构。如顶点、片段着色器、顶点数据矩阵。动手开始挥泪斩情丝OpenGL渲染一般流程OpenGL的渲染是基于线程的,我们这里先创建一个GLRenderer类继承于HandlerThread:..原创 2021-06-05 18:49:29 · 370 阅读 · 2 评论 -
OpenGL ES: (3) EGL、EGL绘图的基本步骤、EGLSurface、ANativeWindow
1. EGL概述EGL 是 OpenGL ES 渲染 API 和本地窗口系统(native platform window system)之间的一个中间接口层,它主要由系统制造商实现。EGL提供如下机制:与设备的原生窗口系统通信 查询绘图表面的可用类型和配置 创建绘图表面 在OpenGL ES 和其他图形渲染API之间同步渲染 管理纹理贴图等渲染资源 为了让OpenGL ES能够绘制在当前设备上,我们需要EGL作为OpenGL ES与设备的桥梁。回到顶部2. 使用EGL绘原创 2021-06-05 18:41:43 · 1574 阅读 · 0 评论 -
OpenGL Shader 自动瘦脸与眼睛放大
图像局部扭曲算法有三个:局部缩放(Local Scaling)算法、局部平移(Local Transition)算法和局部旋转(Local Rotation)算法。其中应用局部缩放算法可实现眼睛放大,局部平移算法则可用于实现瘦脸效果。 precision highp float; varying highp vec2 textureCoordinate; uniform sampler2D inputImageTexture; uniform highp float scaleRatio;.原创 2021-01-12 11:03:40 · 764 阅读 · 0 评论 -
OpenGL ES圆内放大、缩小、向某一点拉伸(曲线形变)算法
1.圆内放大//圆内放大vec2 enlargeFun(vec2 curCoord,vec2 circleCenter,float radius,float intensity,float curve){ float currentDistance = distance(curCoord,circleCenter); { float weight = currentDistance/radius; weight = 1.0-intensity*(原创 2020-11-09 10:57:11 · 956 阅读 · 0 评论 -
GLSL语言OpenGLES(三)
前言前面讲解了glsl语言的基础,这里在继续学习一下opengl es经常用到的知识点,如下:opengl es系列文章opengl es之-基础概念(一)opengl es之-GLSL语言(二)opengl es之-GLSL语言(三)opengl es之-常用函数介绍(四)opengl es之-渲染两张图片(五)opengl es之-在图片上添加对角线(六)opengl es之-离屏渲染简介(七)opengl es之-CVOpenGLESTextureCache介绍(八)opengl es之-原创 2020-11-04 11:03:25 · 913 阅读 · 0 评论 -
IOS离屏渲染OpenGLES(七)
前言前面我们知道,在将渲染结果从帧缓冲区呈现到屏幕上之前,可以多次调用glDrawArrays()函数进行多次渲染。那么如果想对一张图片加饱和度,加对比度等等效果,将如何做呢?一种思路是在片元着色器中对获取到的纹理图片的颜色增加饱和度和对比度,最后将处理后的结果赋值给gl_FragColor,这是一个思路,但是这显然这种做法可能并不友好,不是一种好的设计模式。另外的思路就是利用离屏渲染,所谓离屏渲染,对纹理处理的中间过程(比如加饱和度,对比度等等)并不需要显示到屏幕上的渲染,就称为离屏渲染。加载一张纹理原创 2020-11-04 11:01:58 · 610 阅读 · 0 评论 -
OpenGLES之CVOpenGLESTextureCache介绍(八)
前言 ios系统的CVOpenGLESTextureCacheRef 位于<CoreVideo/CoreVideo.h>中,专门用来处于视频纹理渲染的高效纹理缓冲区, 它配合CMMemoryPoolRef使用,将创建一个纹理缓冲区。 工作原理就是创建一块专门用于存放纹理的缓冲区(由CMMemoryPoolRef负责管理),这样每次应用端传递纹理像素数据给GPU时,直接使用这个缓冲区中的内存,而不用重新创建。避免了重复创建,提高了效率。 本文将介绍如何使用基于CVOpenGLESTe..原创 2020-11-04 11:01:20 · 2743 阅读 · 1 评论 -
安卓OpenGLES环境搭建(十)
前言前面学习了opengl es的基础知识,包括GLSL语言,常用函数等等,由于opengl es是基于夸平台的api设计,它本身不提供上下文管理,窗口管理,这些交给具体的设备厂商。在安卓平台这些是由EGL库实现的,接下来我们就学习安卓平台如何搭建opengl es的环境;安卓平台的EGL库分为java层,在com.media.opengl_es包下;native层的EGL库则需要引入头文件#include <EGL/egl.h>#include <EGL/eglext.h&g原创 2020-10-30 10:20:35 · 1352 阅读 · 0 评论 -
一、OpenGL ES 初探
OpenGL ESOpenGL ES是OpenGL的子集 是以⼿持和嵌⼊式为⽬标的⾼级3D图形应⽤程序编程接⼝(API). OpenGL ES 是⽬前智能⼿机中占据统治地位的图形API.⽀持的平台: iOS, Andriod , BlackBerry ,bada ,Linux ,Windows OpenGL ES是跨平台的,不会提供窗口相关方法,需要系统各自提供载体OpenGL ES 渲染流程下图出自苹果官方文档OpenGL ES as a Client-Server Architecture原创 2020-10-19 14:50:08 · 296 阅读 · 0 评论 -
[OpenGL]未来视觉5-滤镜
1.灵魂出窍效果说明,上一帧的透明度不断减少,叠加在现在这帧的上面,并有放大扩散效果。soulout.gifvoid MagicSoulOutFilter::onDrawArraysPre() { //存在两个图层,开启颜色混合 glEnable(GL_BLEND); //透明度混合 // 表示源颜色乘以自身的alpha 值,目标颜色乘目标颜色值混合,如果不开启,直接被目标的画面覆盖 glBlendFunc(GL_SRC_ALPHA,GL..原创 2020-08-13 14:25:44 · 387 阅读 · 0 评论 -
GLSL常用内建函数
1. dot 点乘 返回两个单位向量之间夹角的cos值2. cross 叉乘3. texture2D 用于纹理采样4. normalize :对⼀一个向量量规格化5. clamp 将⼀个向量固定在一个最小值和最大值之间以下内建函数对矢量标量同样有效6. pow()幂函数7. exp() log() 指数函数 对数函数8. sqrt() 平方根9. max() min()最大值 最小值10. ceil() floor(),取大于实参的最小整数,取小于实参的最大整数1原创 2020-08-12 10:33:18 · 1522 阅读 · 0 评论 -
讲解OpenGL ES的文章
电脑或者手机上做图像处理有很多方式,但是目前为止最高效的方法是有效地使用图形处理单元,或者叫 GPU。你的手机包含两个不同的处理单元,CPU 和 GPU。CPU 是个多面手,并且不得不处理所有的事情,而 GPU 则可以集中来处理好一件事情,就是并行地做浮点运算。事实上,图像处理和渲染就是在将要渲染到窗口上的像素上做许许多多的浮点运算。 通过有效的利用 GPU,可以成百倍甚至上千倍地提高手机上的图像渲染能力。如果不是基于 GPU 的处理,手机上实时高清视频滤镜是不现实,甚至不可能的。 着色器 (s原创 2020-08-12 10:32:44 · 213 阅读 · 0 评论 -
OpenGL ES:YUV转RGB
色彩的二次抽样在RGB颜色模式下,每个像素点由Red、Green、Blue三种颜色组合而成,YUV使用色彩通道UV和亮度通道Y,这种格式更适合图像处理领域,图片的所有细节保存在亮度通道中,如果没有亮度,图片就是一张灰度图片,人的眼睛对亮度的敏感度要高于颜色,所以可以通过减少每个像素点的颜色值,达到效果比较好的压缩,这个减少颜色数据的过程就是色彩的二次抽样YUV转RGB绘制纹理纹理映射只能在RGBA方式下执行,摄像头采集YUV,需要把YUV转换成RGBA获取到视频帧的YUV数据Core原创 2020-08-12 10:23:55 · 2092 阅读 · 1 评论 -
openGL ES美颜滤镜之美白,磨皮,红润
下面是滤镜源码:import android.app.Activity;import android.content.Context;import android.graphics.Bitmap;import android.opengl.GLES20;import android.opengl.GLSurfaceView;import android.opengl.Matrix;import android.view.WindowManager;import com.ws.gl.o转载 2020-08-11 10:26:26 · 773 阅读 · 0 评论 -
关于GLSL的gl_FragCoord、gl_FragDepth以及深度计算
gl_FragCoord和gl_FragDepth分别是片元着色器的输入和输出变量。gl_FragCoord是个vec4,四个分量分别对应x, y, z和1/w。其中,x和y是当前片元的窗口相对坐标,不过它们不是整数,小数部分恒为0.5。x - 0.5和y - 0.5分别位于[0, windowWidth - 1]和[0, windowHeight - 1]内。windowWidth和windowHeight都以像素为单位,亦即用glViewPort指定的宽高。w即为乘过了投影矩阵之后点坐标的w,用于p原创 2020-08-10 11:23:49 · 3829 阅读 · 0 评论 -
GPUImage详细解析- 实时美颜滤镜
解析(一)解析(二)GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。 GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。 GPUImageVideoCamera是GPUImageOutput的子类,提供来自摄像头的图像数据作为源数据,一般是响应链的源头。 GPUImageView是响应链的终点,一般用于显示GPUImage的图像。琨君的基于GPUImage的实时美颜滤镜对G原创 2020-08-10 11:23:14 · 1358 阅读 · 0 评论 -
[OpenGL ES 02]OpenGL ES渲染管线与着色器
一,渲染管线在 OpenGL ES 1.0 版本中,支持固定管线,而 OpenGL ES 2.0 版本不再支持固定管线,只支持可编程管线。什么是管线?什么又是固定管线和可编程管线?管线(pipeline)也称渲染管线,因为 OpenGL ES在渲染处理过程中会顺序执行一系列操作,这一系列相关的处理阶段就被称为OpenGL ES 渲染管线。pipeline 来源于福特汽车生产车间的流水线作业,在OpenGL ES 渲染过程中也是一样,一个操作接着一个操作进行,就如流水线作业一样,这样的实现极大地提高了渲染原创 2020-08-07 10:35:16 · 250 阅读 · 0 评论 -
GPUImage详细解析(三)- 实时美颜滤镜
解析(一)解析(二)GPUImageFilter就是用来接收源图像,通过自定义的顶点、片元着色器来渲染新的图像,并在绘制完成后通知响应链的下一个对象。 GPUImageFramebuffer就是用来管理纹理缓存的格式与读写帧缓存的buffer。 GPUImageVideoCamera是GPUImageOutput的子类,提供来自摄像头的图像数据作为源数据,一般是响应链的源头。 GPUImageView是响应链的终点,一般用于显示GPUImage的图像。琨君的基于GPUImage的实时美颜滤镜对G原创 2020-08-07 10:34:28 · 643 阅读 · 0 评论 -
OpenGL帧缓存对象(FBO)
帧缓存(Frame buffer)帧缓存是屏幕所显示画面的一个直接映象,又称为位映射图 (Bit Map) 或光栅。帧缓存的每一存储单元对应屏幕上的一个像素,整个帧缓存对应一帧图像。图形程序一个重要的目标,就是在屏幕上绘制图像(或者绘制到离屏的一处缓存中)。帧缓存(通常也就是屏幕)是由矩形的像素数组组成的,每个像素都可以在图像对应的点上显示一小块方形的颜色值。经过光栅化阶段,也就是执行片元着色器之后,得到的数据还不是真正的像素,只是候选的片元。每个片元都包含与像素位置对应的坐标数据,以及颜色和深度的原创 2020-08-06 10:16:45 · 874 阅读 · 0 评论 -
OpenGL中的异步缓存传输Asynchronous Buffer Transfers
本文介绍在OpenGL中buffer的异步传输,翻译、摘抄自OpenGL Insights Chapter 28。目前更新到第三节,待续(后面还没看懂)Terminology为了后文表述方便,现说明一些要使用术语:1. GPU被称作device2. 当调用OpenGL functions,相关命令会放入一个队列队列异步地依次执行,这个队列叫device command queue3.uploading:数据从CPU memory向device memory传送4.downl...原创 2020-07-28 20:43:54 · 569 阅读 · 0 评论 -
Android OpenGL ES(八) - 简单实现绿幕抠图
image.png实现绿幕抠图,其实想法很简单。这里简单粗暴的使用着色器替换。OES Filter直接实现在相机预览上的Shader #extension GL_OES_EGL_image_external : require precision mediump float; varying vec2 vTextureCoordinate; uniform samplerExternalOES uTexture; cons...原创 2020-07-27 10:58:37 · 1336 阅读 · 0 评论 -
GPUImage2(三)滤镜大全:色彩调校
本文所有示例代码或Demo可以在此获取:https://github.com/WillieWangWei/SampleCode_GPUImage2_FilterList.git如果本文对你有所帮助,请给个Star?相关文章GPUImage2(一)集成与使用GPUImage2(二)滤镜大全:图像生成GPUImage2(四)滤镜大全:图像处理GPUImage2(五)滤镜大全:混合模式GPUImage2(六)滤镜大全:视觉特效概述本篇枚举GPUImage2内置滤镜中的所有的色彩调校类别,并对其原创 2020-07-27 10:58:07 · 472 阅读 · 0 评论 -
OpenGL : 看完glWaitSync函数描述后产生的一点疑问
OpenGL : 看完glWaitSync函数描述后产生的一点疑问?根据OpenGL的WIKi文档:Sync Object - OpenGL.orgglWaitSync会阻止GPU向commandQueue中issue新的command,直到sync object被signal为止。所以调用这个函数之前要调用glflush,保证sync object 在command queue中执行,避免sync object不在command queue中,而glWaitSync又阻止GPU向command q原创 2020-07-23 10:30:31 · 1225 阅读 · 0 评论 -
《Android 美颜类相机开发汇总》目录
第一章 Android OpenGLES 相机预览第二章 Android OpenGLES 录制视频第三章 Android OpenGLES 给相机添加滤镜第四章 Android OpenGLES 动态贴纸实现第五章 Android OpenGLES 美颜定制实现第六章 Android OpenGLES 美妆定制实现其他资料:Snapdragon Profiler Linux版安装与调试opengles应用Android OpenGLES 实时美颜(磨皮)的优化Android OpenGLES 实时...原创 2020-07-23 10:27:31 · 871 阅读 · 0 评论