![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL
张雨zy
这个作者很懒,什么都没留下…
展开
-
Android OpenGL ES基本用法(15),shader缩放特效
目录缩放特效,在之前的基础上,加上一个缩放特效保存旋转后的矩阵的值 public void setAngle(float angle, float x, float y, float z) { //根据手机的相机进行旋转矫正 Matrix.rotateM(matrix, 0, angle, x, y, z); //将旋转后的矩阵保存下来 for (int i = 0; i < 16; i++) { ..原创 2020-09-14 15:05:07 · 1102 阅读 · 0 评论 -
Android OpenGL ES基本用法(14),MediaCodec录制Camera视频
视频编码得到MediaCodec的输入Surface,然后OpenGL把视频数据渲染到这个Surface上,MediaCodec就可以进行视频编码了。1、surface = videoEncodec.createInputSurface();2、eglHelper.initEgl(surface, eglContext);3、ByteBuffer outputBuffer = vi...原创 2020-04-17 16:40:32 · 2172 阅读 · 6 评论 -
Android OpenGL ES基本用法(13),渲染Camera数据
原理OpenGL生成纹理并绑定到SurfaceTexture上,将Camera数据设置到SurfaceTexture上,然后就可以从OpenGL中获取到Camera数据了使用扩展纹理1、着色器纹理类型:#extension GL_OES_EGL_image_external : requireprecision mediump float;varying vec2 ft_Positio...原创 2020-04-07 13:13:02 · 1546 阅读 · 1 评论 -
Android OpenGL ES基本用法(12),单个Surface渲染多个纹理,实现画中画
PicRenderpackage com.example.opengl.eglpic;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.opengl.GLES20;import android.openg...原创 2019-11-16 10:55:08 · 2277 阅读 · 2 评论 -
Android OpenGL ES基本用法(11),简单滤镜操作
加入简单的滤镜操作fragment_shader1.glslprecision mediump float;varying vec2 ft_Position;uniform sampler2D sTexture;void main() { gl_FragColor = vec4(vec3(1.0 - texture2D(sTexture, ft_Position)), 1.0...原创 2019-11-07 10:11:20 · 512 阅读 · 0 评论 -
Android OpenGL ES基本用法(10),多个surface绘制同一个共享纹理
在上一篇的基础上实现共享纹理。MainActivity private void initView() { picGlSurfaceView = (PicGlSurfaceView) findViewById(R.id.picGlSurfaceView); llContent = (LinearLayout) findViewById(R.id.llConte...原创 2019-11-06 17:27:34 · 4227 阅读 · 3 评论 -
Android OpenGL ES基本用法(9),矩阵的旋转
x轴向右y轴向上z轴向里矩阵的旋转Matrix.rotateM(matrix, offset, a, x, y, z);a:旋转角度正数:逆时针旋转负数:顺时针旋转x、y、z:分别表示相应坐标轴 取值0,1类似于Boolen值,例如 x=1代表x轴旋转 @Override public void onSurfaceChanged(int width, int...原创 2019-11-05 20:25:20 · 2731 阅读 · 0 评论 -
Android OpenGL ES基本用法(8),正交投影解决拉伸问题
之前的遗留问题,就是画面被拉伸。这时需要用正交投影来解决这个问题。1.新建一个带matrix的shader2.关联 //正交矩阵 private int uMatrix; //具体的矩阵的值 private float[] matrix = new float[16]; uMatrix = GLES20.glGetUniformLocation(pr...原创 2019-11-05 19:43:11 · 1179 阅读 · 3 评论 -
Android OpenGL ES基本用法(7),FBO
FBOFrame Buffer Object 帧缓冲对象为什么要使用FBO?当我们需要对纹理进行多次渲染采样时,而这些渲染采样是不需要展示给用户看的(例如美颜过程),所以我们就可以用一个单独的缓冲对象(离屏渲染)来存储我们的这几次渲染采样的结果,等处理完后才显示到窗口上。优势1.提高渲染效率(后台绘制没有展示到窗口上)2.避免闪屏3.可以很方便的实现纹理共享等。渲染方式渲染到缓冲...原创 2019-11-05 19:19:21 · 2187 阅读 · 3 评论 -
Android OpenGL ES基本用法(6),VBO
VBOVertex Buffer Object 顶点缓存对象不使用VBO时,我们每次绘制( glDrawArrays )图形时都是从本地内存处获取顶点数据然后传输给OpenGL来绘制,使用VBO,我们就能把顶点数据缓存到GPU的显存中,直接从显存中获取数据,这样就能提升绘制的效率。创建VBO1、创建VBOGLES20.glGenBuffers(1, vbos, 0);2、绑定VBO...原创 2019-11-05 11:12:16 · 1124 阅读 · 0 评论 -
Android OpenGL ES基本用法(5),自定义EGLSurfaceView
为什么要自定义GlSurfaceViewMyGlSurfaceView.javapackage com.example.opengl.egl;import android.content.Context;import android.util.AttributeSet;import android.view.Surface;import android.view.SurfaceHol...原创 2019-11-03 18:16:30 · 1672 阅读 · 0 评论 -
Android OpenGL ES基本用法(4),绘制纹理图片
vertex_shader.glsl//vec4使用4个向量xyzwattribute vec4 av_Position;//这里绘制2D图形,所以使用vec2两个向量的即可xyattribute vec2 af_Position;varying vec2 v_texPo;void main() { v_texPo = af_Position; gl_Position ...原创 2019-09-19 15:08:06 · 2651 阅读 · 1 评论 -
Android OpenGL ES基本用法(3),绘制四边形
绘制一个四边形,需要两个三角形来拼接成。原创 2019-09-19 14:59:29 · 631 阅读 · 0 评论 -
Android OpenGL ES基本用法(2),绘制三角图形
Android OpenGL ES基本用法(2),绘制简单图形原创 2019-09-19 14:59:14 · 735 阅读 · 1 评论 -
Android OpenGL ES基本用法,目录
Android OpenGL ES基本用法(1),环境的搭建Android OpenGL ES基本用法(2),绘制三角图形Android OpenGL ES基本用法(3),绘制四边形Android OpenGL ES基本用法(4),绘制纹理图片...原创 2019-09-19 14:57:16 · 1891 阅读 · 0 评论 -
Android OpenGL ES基本用法(1),环境的搭建
Android OpenGL ES基本用法原创 2019-09-19 14:56:29 · 851 阅读 · 0 评论