在BigFlake示例之后,有一条评论指出:
// Acquire a new frame of input, and render it to the Surface. If we had a
// GLSurfaceView we could switch EGL contexts and call drawImage() a second
// time to render it on screen. The texture can be shared between contexts by
// passing the GLSurfaceView's EGLContext as eglCreateContext()'s share_context
// argument.
Run Code Online (Sandbox Code Playgroud)
我EGL14.getCurrentContext()
用来查询当前上下文并将其传递给EGL14.eglCreateContext()
share_context参数,但是如何"切换EGL上下文"?
GLSurfaceView和MediaCodec.inputSurface有两个不同的表面和两个不同的上下文,所以我假设你只是eglMakeCurrent()
单独调用每个集合,这是正确的吗?你需要eglDestroyContext()
或eglDestroySurface()
?
添加了更新
谢谢Fadden,我想我发现了这个错误,而不是drawFrame我调用了drawImage,但你不应该再次更新图像,对吧?
现在我glError 1285
在设置EOS后调用dequeueBuffer时出现内存不足错误??? 也许我在录音停止后调用它.谢谢你的帮助.
在MyEGLWrapper.java中创建EGLSurface
saveToScreenRenderState();
mEGLContext = …
Run Code Online (Sandbox Code Playgroud) 致力于实现mediamuxer类.它需要来自mediacodec类的输入(一个音频和一个视频).但尝试编码"video/mp4"时抛出错误
码:
String mime = MimeTypeMap.getSingleton()
.getMimeTypeFromExtension("mp4");
codec = MediaCodec.createEncoderByType(mime);
Run Code Online (Sandbox Code Playgroud)
错误:
Unable to instantiate a decoder for type 'video/mp4'
Run Code Online (Sandbox Code Playgroud)
注意错误是针对解码器的,并且调用是创建编码器.
我可能会在一分钟内解决这个问题,但是对于碰到这个问题的其他人来说,它会在这里.
我一直在浏览OpenGLSL ES 3.0 Spec,但我找不到有关内置函数如何texture(sampler, p)
定义 P 的任何内容。我知道它是一个vec2
.
它是一个介于 0.0 和 1.0 之间的标准化浮点,定义从左上角到按钮右侧的缩放器吗?
或者是像函数一样从 0 到维度大小减 1 查找纹素texelFetch()
?
或者它是否更复杂并且以某种方式在纹理属性中定义?这里它指出“纹理坐标可以标准化或在纹素空间中”。但我对此表示怀疑,因为我没有看到任何地方可以将纹理设置为标准化。
我有一个简单的开箱即用应用程序,当我在iphone5s上部署时,它不会使用整个屏幕.默认情况下,它会创建一个LaunchScreen.xib.我没有故意编辑这个文件.
其他答案建议添加一个Default-568h@2x.png启动图像,但我没有使用启动图像,我不知道在哪里添加这些.我在Images.xcassets中看到了这个位置,方法是单击+图标并选择New Launch Image.
我是否需要向Images.xcassets添加新的启动图像?如果是这样,拥有LaunchScreen.xib的重点是什么?
谢谢!