你需要明白OpenGL如何绘制并决定我们看到的东西。 相对于 OpenGL 来说 OpenGL ES 一个很大的缺点就是除了三角形以外没有别的图元类型。我们没有其它多边形,所以我们想要创建的所有的对象都必须由三角形构成。我引用一个 blog 的帖子来说明这个问题:  IPhone developer  ,同时也推荐他的这些文章
转载 2024-01-17 17:03:03
70阅读
OpenGL.ES在Android上的简单实践:23-水印录制(FBO离屏录制,解决透明冲突)1、水印签名罢工了?不知道大家有没注意到,之前我们使用MediaCodec录制的视频,水印签名那部分区域还是黑黑的啊(笑哭.jpg)。道理还是之前说过的,原生的Surface默认格式是RGB565,不支持透明通道。我也在 20-水印录制 提供了解决方案。 第一种就是在shader层使用
转载 2023-11-01 20:14:04
115阅读
添加水印的原理主要是利用OpenGL ES绘制多次,把不同的纹理如图片、文本等绘制到纹理或窗口上,达到添加水印的效果,需要注意的地方就是要确定好需要在屏幕上绘制的位置坐标。添加水印的原理:利用OpenGL ES绘制多次,把不同的纹理如图片、文本等绘制到纹理或窗口上,达到添加水印的效果。图片水印,直接绑定bitmap到纹理;文字水印,先将文字转为bitmap,再绑定到纹理。先看效果: 添加水印的步骤
转载 2023-11-17 12:51:44
139阅读
 -1、先吹下水,装下*距离上一个主题有一段时间了,最近都在忙工作,因为需要在Android上写C++,所以就复习了一些NDK的知识。打算之后也会整理并写下这一块的博客,把一些复杂的code记录在案方便学习(其中包括webrtc,简单的ffmpeg,AAC,H264都会涉及介绍)正所谓好记性不如烂笔头嘛。。。言归正传,OpenGL.ES在Android上的简单实践专栏,经历过两个课题项目
        真实的水面模拟在三维游戏领域一直是一个非常热门的问题,因为在大型的场景中,流体总是不可避免地会存在的。在这一方面,我也查了不少资料,总结而言,水面模拟一般有这么几个方法:        绘制部分:        1.比较简单的,就是贴图置换(或者是直着拖着一张贴图
opengl es 2.0 视频播放demo: https://github.com/wangzuxing/MyFFmpegH264H265YUVOpenGL以YUV纹理贴图实现视频播放: 1、把jni端解码的YUV数据/摄像头预览的YUV数据传入glTexImage2D()函数,并以GL_LUMINANCE格式进行纹理加载、绑定 2、把YUV数据产生的相关纹理单元赋给片元着色器的各2D采样器
Android 应用中,使用 OpenGL 绘制图形和录制视频常常会遇到水印的问题。在很多情况下,水印的出现是由开发者在录制视频时手动添加的,但我们可能希望将其移除,以实现更清洁的用户体验。接下来,我们将详细阐述如何解决 Android OpenGL 录像水印的问题,包括环境准备、集成步骤、配置详解、实战应用、性能优化和生态扩展。 ## 环境准备 为了能够进行 Android OpenGL
原创 5月前
40阅读
# Android OpenGL 录像水印的实现 在现代移动应用中,影音内容的丰富性让用户体验更加多彩。然而,某些应用需要在录制的视频上添加水印,以保护版权或增强品牌形象。本文将通过 Android OpenGL 实现视频录制时的水印添加,包含了代码示例和完整的实现流程。 ## 一、基础知识 在 Android 中,OpenGL 是一个强大的图形库,广泛用于游戏和图形应用的开发。在视频录制时
原创 8月前
185阅读
色子是可以触摸转动的,不要见怪,更多玩法还有待开发。进入正题,先看一下类结构: DiceActivity.java是主Activity,主要代码:mGLView = new DiceSurfaceView(this); setContentView(mGLView);就是将DiceSurfaceView的实例设置为Activity的内容视图,菜单操作只是为
/* glfont.hpp sdragonx 2019-08-15 00:03:33 opengl字体类,提供初学者参考学习 opengl初始化之后,创建字体 font.init(L"微软雅黑", 32, 512); 然后在绘制函数里面添加以下测试代码: //开启2D模式,后面的800x600要根据窗口的实际客户区大小设置,不然缩放之后效果不好 push_view2D(0, 0,
转载 2023-11-29 23:55:09
53阅读
OpenGL.ES在Android上的简单实践:18-水印录制(自定义Android-EGL) 1、确定需求这次的项目需求总结下来是这样的:一个摄像头预览界面,一个按钮触发屏幕录制,录制视频带上水印效果。1. 摄像头预览 2. 屏幕录制 3. 录制视频在指定位置附带上水印确定需求后,我们逐一分析模块组成并完成它。So,Talk is cheap,Let me show codes!&nb
这个播放是通过renderer的方式,iOS版的是通过EAGLContext的方式,总体流程是一样的:需要这么几个步骤:编写shader->编译shader->链成gpu程序(代码中的program)->分别创建yuv纹理对象->找到yuv纹理对象对应的显卡插槽(也就是要给gpu中运行的纹理对象传数据的地址)->给yuv纹理对象绑定数据->绘图。 因此i
转载 2024-04-19 18:35:42
285阅读
上一篇讲了用OpenGL纹理渲染摄像头数据,这一篇打算利用上一篇的开发成果,录制视频。一、FBO前面讲的利用OpenGL纹理渲染的Camera数据是直接显示到屏幕的,但是在直播推流时候是不能这么做的,这时候得把用OpenGL渲染出来的数据放到一个容器中,然后用这个容器的数据去显示到屏幕,或者录制,或者去直播推流就行了。这个容器就是这里要介绍的FBO(Frame Buffer object),离屏缓
转载 2024-08-12 20:10:56
45阅读
最新版本,之前的版本有些文件没有打包 视频教程请关注   OpenGL本身并没有绘制文字的功能,他只是一个三维绘图的API集和,很多东西都要自己动手才可以实现。OpenGL绘制文字,网络上已经有很多成熟的方式方法,我这里给大家介绍的是我使用的方式,从绘制的效率上来说,速度上从已经达到我个人水平的最大值。如果你有更好的方式,请联系我。  首先介绍下网络上的一些
转载 2023-10-09 21:08:59
253阅读
# 如何在Android中使用OpenGL水印视频 ## 一、引言 在很多应用中,我们可能需要对视频进行处理,比如添加水印Android开发中,使用OpenGL进行视频处理是一种高效的方法。本文将引导你一步一步实现“在Android中使用OpenGL对视频加水印”的功能。 ## 二、整体流程 实现这一功能的整体流程如下所示: | 步骤 | 任务描述
原创 7月前
78阅读
# Android OPENGL 添加时间水印的实现指南 在Android应用中,利用OpenGL添加动态水印效果是一个非常有趣且实用的功能,特别适合于视频播放器、直播等场景。本篇文章将详细介绍如何实现这一功能,帮助刚入行的小白开发者掌握OpenGL的基本用法和水印的添加方法。 ## 实现流程概述 我们将整个实现流程分为以下几个步骤: | 步骤 | 描述
原创 10月前
236阅读
2010年07月03日   本课我们来谈谈如何显示文字。   OpenGL并没有直接提供显示文字的功能,并且,OpenGL也没有自带专门的字库。因此,要显示文字,就必须依赖操作系统所提供的功能了。   各种流行的图形操作系统,例如Windows系统和Linux系统,都提供了一些功能,以便能够在OpenGL程序中方便的显示文字。   最常见的方法就是,我们给出一个字符,给出一个显示列表编
转载 2023-11-23 15:56:22
80阅读
OpenGL.ES在Android上的简单实践:19-水印录制(EGL+摄像头预览 GL_TEXTURE_EXTERNAL_OES) 0、补充EglSurfaceBase在自己实际运用中,发现EglSurfaceBase还是缺了对原生的surface的管理,对整体的理解好像总缺了点啥。所以在EglSurfaceBase的基础上,派生出了WindowSurface。代码超级简单的,但从理解
转载 2024-06-17 20:36:29
180阅读
1.OpenGL实现视频的水印、滤镜?OpenGL实现视频的剪裁、旋转? 2.2D/3D物体的 旋转,平移,缩放? OpenGL图片滤镜与视频滤镜?  矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方程组的系数及常数所构成的方阵。在物理学中,矩阵于电路学、力学、光学和量子物理中都有应用;计算机科学中,三维动画制作也需要用到矩阵。 矩阵的运算是数值分析领域的重要问题
转载 2024-03-14 23:38:01
204阅读
        渲染三维场景时经常会遇到需要渲染各种水体的情况,比如湖泊、河流、海洋等,不仅需要水体表面要有接近真实的随时间而变化的波动,还要有令人信服的颜色、反射光、透明度等细节。实时渲染水面的方法有很多,从简单的若干正弦波叠加,到《GPU Gems》中介绍的叠加Gerstner波的方法,再到如今GPU在线计算FFT得到表面高度,都是以追求效果更加逼真的同
转载 4月前
21阅读
  • 1
  • 2
  • 3
  • 4
  • 5