首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有openGL的Android MediaMuxer

带有openGL的Android MediaMuxer
EN

Stack Overflow用户
提问于 2014-05-14 00:34:18
回答 1查看 392关注 0票数 0

我正在尝试使用MediaMuxer生成电影。Grafika示例是一个很好的尝试,但是当我尝试扩展它时,我遇到了一些问题。

我试图在电影中画一些基本的形状,如正方形,三角形,线条。如果我将形状绘制到屏幕上,但不能在视频中绘制相同的形状,那么我的openGL代码工作得很好。

我也有关于设置openGL矩阵,程序,着色器和视图的问题。通常,有像onSurfaceCreatedonSurfaceChanged这样的方法,这样我就可以设置这些东西了。在GeneratedMovie中做这件事最好的方法是什么

任何人有写成更复杂形状的视频的例子都会受到欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-14 01:08:41

你画的画的复杂程度不重要。您将绘制要绘制的所有内容,然后调用eglSwapBuffers()提交缓冲区。无论你画一个平阴影三角形或100 K超双面阴影三角形,你仍然只是提交一个数据缓冲区给视频编码器或表面作曲家。

没有等同于SurfaceView的surfaceCreated()surfaceChanged(),因为SurfaceView是由MediaCodec#createInputSurface()创建的(所以您知道何时创建),而Surface不会改变。

使用GeneratedMovie的代码会执行一些非常简单的呈现(设置scissor,call clear)。RecordFBOActivity中的代码应该是你应该看到的--它有一个弹跳的直角和一个旋转的三角形,并演示了三种不同的方法来处理必须渲染两次的事实。

( HardwareScalerActivity中的代码使用相同的GLES例程并演示纹理化,但它不进行记录。)

关键是仔细管理您的EGLContext和EGLSurfaces。GLES状态的各种位都保存在EGLContext中,每次只能在一个线程上运行。使用单个上下文并为每个Surface设置单独的EGLSurface是最简单的,但您也可以创建单独的上下文(不管是否共享),并在它们之间进行切换。

一些额外的背景材料是可在这里找到

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23643800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档