之前 android studio搭建简单jni层的opengl开发框架讲到的是在上层render的三个回调函数中写jni函数,从而在jni层调用opengl的绘制,但是在做播放器的时候,需要用opengl来渲染 每一帧,而底层解码后,再渲染,将渲染放在底层,这样播放器的整个框架都在底层,上层只是UI的一些显示操作,而且 如果在render的onFrame中直接来显示帧,在暂停或者seek的时候由于 glsurfaceview的双缓冲机制,容易导致画面2帧之间来回跳动,不好控制。
上层g.lsurfaceview部分
上层继承glSurfaceView,实现callback接口 和 renderer接口
package com.example.opengltest;
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.util.Log;
import android.view.Surface;
import android.view.SurfaceHolder;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
public class LGlsurfaceView extends GLSurfaceView implements SurfaceHolder.Callback, GLSurfaceView.Renderer {//
static {
System.loadLibrary("lammyVideoPlayer");
}
public LGlsurfaceView(Context context) {
super(context);
setRenderer(this);
}
public void surfaceCreated(SurfaceHolder holder){
initEgl(holder.getSurface());
}
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height){
}
public void surfaceDestroyed(SurfaceHolder holder){
closeEgl();
}
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
}
@Override
public void onSurfaceChanged(GL10 gl, int wi
OpenGL与JNI在Android的集成

最低0.47元/天 解锁文章
1037





