opengles专题

Android OpenGLES开发:EGL环境搭建

努力,不是为了要感动谁,也不是要做给哪个人看,而是要让自己随时有能力跳出自己厌恶的圈子,并拥有选择的权利,用自己喜欢的方式过一生! EGL是什么? 谈到openGL开发我们就不得不说EGL,那EGL是什么呢?请看下图 官方听不懂解释 EGL(Embedded Graphic Library)是渲染API(如OpenGL ES)和本地窗口系统(native platform w

Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)

PS:要转载请注明出处,本人版权所有。 PS: 这个只是基于《我自己》的理解, 如果和你的原则及想法相冲突,请谅解,勿喷。 前置说明   BlogID=103 环境说明 Ubuntu 18.04gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)OpenGl ES 3.1 or 3.1+RK3399PRO 板卡 前言   由于我们小组的产品

OpenGLES Android篇零基础系列(三):OpenGL ES的渲染管道及VertexShader与FragmentShader

前言 在前2篇文章中,我们都说到着色器,且在第二篇中正式说到,这着色器只能用在OpenGL ES2.x等可编程管道里面,而在OpenGL ES1.x是不能用的。但我们一直没有说这是为什么,两者有什么区别。那这篇我们就一起来学习下OpenGL ES中的渲染管道。 正文 管道,英文名叫Pipeline,相信用过FaceBook图片加载库的同学对这个管道并不陌生,因为SimpleImageDraw

OpenGLES Android篇零基础系列(二):OpenGL各坐标系及模型矩阵(ModelViewMatrix),投影矩阵(ProjectionMatrix)等的深入理解

上一篇我们粗略的介绍了下GLES20 中 GLSurfaceView以及Render接口的使用。 对于三角形顶点坐标的定义并没有做出注释,其实在官方的ApiDemo中,它也是赤裸裸的,一个注释都没有,且代码写得一点都不敢恭维,不知道那位同行现在是不是还在google里面。下面贴出一小段官方的ApiDemo中的代码,一起鉴赏鉴赏: private static final int FLOAT_

OpenGLES Android篇零基础系列(一):OpenGLES2.x可渲染管道基本流程

转载请注明出处 前言 OpenGL ES是OpenGL的一个子集,是针对手机、PDA和游戏主机等嵌入式设备而设计的。该API由Khronos集团定义推广,Khronos是一个图形软硬件行业协会,该协会主要关注图形和多媒体方面的开放标准。 因此OpenGL ES作为第三方库被应用在android中。 到目前为止,OpenGL ES已经发展有了3个版本,OpenGL ES 1.0 , Open

安卓opengles使用ndk方式读取png图片

本博客主要是通过使用libpng来进行加载png图片 1libpng图片配置 (1)在官网下载最新的libpng压缩包和zlib压缩包,然后解压,分别放入如下图所示的png目录和zlib目录 (2)将jni\png\scripts目录下的pnglibconf.h.prebuilt文件复制到jni\png目录下,并且重命名为pnglibconf.h。 (3)在jni\png目录下新建An

OpenglES遇到的坑

1、纹理无法显示,信息窗口没有明显错误 解决方法:shader内部命名写错。 2、在编译C++端文件时,提示cannot find -lGLESv3 解决方法:在default.properties,将目标版本设的高一些,原先是9。目标版面如果不支持该opengl版本会出现这种情 3.opengles读入大尺寸纹理出错。 解决方法,将大尺寸纹理的剪切为长或高,不要超过2048(openg

android jni 用c++使用opengles和egl实现离屏渲染

最近在做视频有关的东西,用开源的ffmpeg解码视频,在通过opengl渲染出来,因为有使用到egl就试了试离屏渲染   EGLConfig eglConf;EGLSurface eglSurface;EGLContext eglCtx;EGLDisplay eglDisp;   egl用到的就是这四个 先初始化     EGLint configSpec[] = { EGL

Android opengles 法线贴图(Normal Mapping)

在褶皱的画面上做画面替换,比如一件衣服替换衣服的花纹,再比如旗子上替换图案,由于不知道用的是什么相关技术,就从褶皱开始搜起,原来这种技术叫凹凸映射,有两种实现方法高度纹理(height map)和法线纹理(normal map),原理方面我也不太懂,所以就不说了,有兴趣可以自己搜索相关内容,我在网上找到了法线纹理的实现方法normalMapping,高度纹理以后找找看 法线纹理是将原图 通

Android OpenGLES绘制yuv420纹理

Android OpenGLES绘制yuv420纹理  曾大稳丶 关注 2018.07.16 11:31 字数 76 阅读 440评论 0喜欢 3 把shader代码写入raw里面 vertex_shader.glsl attribute vec4 av_Position;//顶点位置attribute vec2 af_Position;//纹理位置varying vec2 v_te

OpenGLES帧缓冲

https://www.jianshu.com/p/78a64b8fb315   FBO Frame Buffer object 为什么要用FBO 我们需要对纹理进行多次渲染采样时,而这些渲染采样是不需要展示给用户看的,所以我们就可以用一个单独的缓冲对象(离屏渲染)来存储我们的这几次渲染采样的结果,等处理完后才显示到窗口上 优势 提高渲染效率,避免闪屏,可以很方便的实现纹理共

OpenGLES glClear函数

Refrence https://blog.csdn.net/shuaihj/article/details/7230138https://docs.microsoft.com/en-us/windows/win32/opengl/glclear 函数原型: void glClear(GLbitfield mask); 参数说明: GLbitfield:可以使用 | 运算符组合不

Android OpenGLES 报错 Must use a native order direct Buffer

Refrence http://blog.sina.com.cn/s/blog_4119bd830100wlab.htmlhttps://www.cnblogs.com/ghj1976/archive/2012/04/27/2473046.html Android使用OpenGLES时,传入的顶点着色器是FloatBuffer,各资料都显示需要通过 ByteBuffer.allocateDir

GUI系统之SurfaceFlinger(1)OpenGLES与EGL

文章都是通过阅读源码分析出来的,还在不断完善与改进中,其中难免有些地方理解得不对,欢迎大家批评指正 转载请注明:From LXS. http://blog.csdn.net/uiop78uiop78/ 第1章  GUI系统之SurfaceFlinger 在进入GUI系统的学习前,建议大家可以先阅读本书应用篇中的“OpenGLES”章节,并参阅OpenGL ES官方指南。因为A

OpenGLES学习第三步:绘制立方体

package test.com.opengles5_3;import android.opengl.GLES20;import java.nio.ByteBuffer;import java.nio.ByteOrder;import java.nio.FloatBuffer;/*** Created by hbin on 2016/8/2.* 颜色立方体*/public class Cub

OpenGLES学习第二步:关键API

loadGLShader加载着色器    GLES30.glCreateShader(创建一个着色器对象)         glCreateShader创建一个空的着色器对象,并返回一个可以引用的非零值(shader ID)。着色器对象用于维护定义着色器的源代码字符串。shaderType指示要创建的着色器的类型。 支持两种类型的着色器。 GL_VERTEX_SHADER类型的着色器是一个用于在可

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载带光照信息的材质文件Mtl 实现光照贴图的最简实例(十七)

文章目录 前言一、3d 立方体 model 属性相关文件1. cube1.obj2. cube1.Mtl3. 纹理图片 cordeBouee4.jpg 二、实现光照贴图的效果1. 依赖库和头文件1.1 assimp1.2 stb_image.h 2. egl_wayland_obj_cube1.cpp3. Matrix.h 和 Matrix.cpp4. xdg-shell-client-pr

wayland(xdg_wm_base) + egl + opengles 使用 Assimp 加载3D model 最简实例(十三)

文章目录 前言一、3D model 文件介绍1. 3d model 介绍1.1 如何获取3d model 文件1.2 3d model 的文件格式1.3 obj模型数据格式 2. 3d 立方体 model 实例——cube.obj 二、Assimp 介绍1. Assimp 简介2.ubuntu 上安装libassimp3. 使用Assimp 解析 cube.obj 文件3.1 assimp_

wayland(xdg_wm_base) + egl + opengles 渲染旋转的 3D 立方体实例(十一)

文章目录 前言一、实现旋转的3D 立法体需要用到的技术1. 模型矩阵2. 视图矩阵3. 投影矩阵4. 背面剔除 二、opengles3.0 渲染旋转的 3D 立方体实例1. egl_wayland_cube3_0.c2. Matrix.h 和 Matrix.c3. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c4. 编译5. 运行 总结参

opengles 绘制图元 ——glDrawArrays() 相关API介绍 (十)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、opengles3.0 绘制图元介绍二、绘图图元 API 介绍1. glDrawArrays()1.1 glDrawArrays()函数原型1.2 GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN 三者的区别1.3 使用GL_TRIANGLES, GL_

OpenGLES:glReadPixels()获取相机GLSurfaceView预览数据并保存

Android现行的Camera API2机制可以通过onImageAvailable(ImageReader reader)回调从底层获取到Jpeg、Yuv和Raw三种格式的Image,然后通过保存Image实现拍照功能,但是却并没有Api能直接在上层直接拿到预览Surface上的实显数据。 Android Camera预览的实现是上层下发Surface到CameraHAL,由CameraHA

OpenGLES:实现11个卡通箱子绕7个轴旋转

效果展示 一.概述 上一篇博文讲解了使用六张卡通图片进行立方体纹理贴图,实现一个旋转的箱子的效果。 这一篇博文在上一篇的基础上进行拓展,实现11个箱子分别围绕7个方向轴旋转的效果。 为什么是11个箱子? 因为我只绘了11个,如果想可以绘制任意多个。 7个轴分别是哪7个? x, y, z三个轴,以及3维坐标系中各空间象限与(x,y,z)都成45度夹角的方向轴。 贴图的图片仍然延用

opengles 顶点坐标变换常用的矩阵(九)

文章目录 前言一、opengles 常用的模型矩阵1. 单位矩阵2. 缩放矩阵3. 位移矩阵4. 旋转矩阵 二、第三方矩阵数学库1. glm1.1 ubuntu 上安装 glm 库1.2 glm 使用实例1.2.1 生成一个沿Y轴旋转45度的4x4旋转矩阵, 代码实例如下1.2.2 生成一个将物体移到到Z轴正方向坐标为5处的4x4 view视图矩阵, 代码实例如下1.2.3 生成一个视野角度

wayland(xdg_wm_base) + egl + opengles——dma_buf 作为纹理数据源(五)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、EGL dma_buf import 相关的数据结构和函数1. EGLImageKHR2. eglCreateImageKHR()3. glEGLImageTargetTexture2DOES() 二、egl 中 import dma_buf 作为纹理的代码实例1. egl_wayland_dmabu

wayland(xdg_wm_base) + egl + opengles 纹理贴图进阶实例(四)

文章目录 前言一、使用gstreamer 获取 pattern 图片二、代码实例1. pattern 图片作为纹理数据源的代码实例1.1 基于opengles2.0 接口的 egl_wayland_texture2_1.c1.2 基于opengles3.0 接口的 egl_wayland_texture3_1.c 2. xdg-shell-client-protocol.h 和 xdg-sh

wayland(xdg_wm_base) + egl + opengles 纹理贴图实例

文章目录 前言一、纹理贴图1. 纹理贴图介绍2. 使用opengles 实现纹理贴图的主要步骤 二、代码实例1. egl_wayland_texture.c2. xdg-shell-client-protocol.h 和 xdg-shell-protocol.c3. 编译4. 运行 总结 前言 本文主要介绍如何在一个wayland client 里面使用 egl + open