我遇到了 GLSurfaceView + libmpv 的问题。在学习了 OpenGL ES 的一些基础知识之后,我开始在 Android 上实现一个视频播放器,如下所示:
据我所知,我认为我的着色器没有问题,因为我认为它很简单,如下所示:
private final String VSH_CODE =
"uniform mat4 uSTMatrix;\n"+
"attribute vec4 aPosition;\n"+
"attribute vec4 aTexCoord;\n"+
"varying vec2 vTexCoord;\n"+
"void main(){\n"+
" vTexCoord = aTexCoord.xy;\n"+
" gl_Position = aPosition*uSTMatrix;\n"+
"}";
private final String FSH_CODE =
"#extension GL_OES_EGL_image_external : require\n"+
"precision mediump float;\n"+
"varying vec2 vTexCoord;\n"+
//"uniform mat4 uColorMatrix;\n"+
"uniform samplerExternalOES sTexture;\n"+
"void main() {\n"+
//" gl_FragColor = uColorMatrix*texture2D(sTexture, vTexCoord).rgba;\n"+
" gl_FragColor = texture2D(sTexture, vTexCoord).rgba;\n"+
"}";
但我不知道下一步该怎么做才能更正我的申请。我是否必须使用 Renderdoc 或其他东西调试一些 GPU 内容?任何想法将不胜感激。
一个愚蠢的错误。
用GAPID调试后发现渲染贴图是1x1的
所以我所要做的就是在libmpv完成加载文件时调用
surfaceTexture.setDefaultBufferSize(width, height)
来设置正确的宽度和高度。