doum
6 天以前 2b287056e2f59518888d05a1bbc7e5a55fbd84d5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
 * Copyright (C) 2018 Baidu, Inc. All Rights Reserved.
 */
package com.example.datalibrary.view;
 
import android.content.Context;
import android.opengl.GLSurfaceView;
import android.util.AttributeSet;
 
import java.nio.ByteBuffer;
 
public class ColorSurfaceView extends GLSurfaceView {
    /**
     * 深度图的图像渲染器
     */
    private ColorRenderer mRenderer;
 
    public ColorSurfaceView(Context context) {
        super(context);
        init();
    }
 
    public ColorSurfaceView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }
 
    /**
     * 初始化
     */
    private void init() {
        // 创建一个OpenGL ES 2.0 context,将要使用2.0版的API
        setEGLContextClientVersion(2);
        // 创建一个渲染器
        mRenderer = new ColorRenderer();
        // 设置渲染器
        setRenderer(mRenderer);
        // 设置渲染模式
        // GLSurfaceView.RENDERMODE_CONTINUOUSLY:持续型模式,以一定周期定时重新绘制view
        // GLSurfaceView.RENDERMODE_WHEN_DIRTY:通知型模式,只有在绘制数据改变时才绘制view
        setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
    }
 
    /**
     * 渲染深度图数据
     *
     * @param buffer
     */
    public void updateVertices(ByteBuffer buffer) {
        // 接收视频流的帧数据
        mRenderer.setRgbBuffer(buffer);
        // 执行画面渲染,调用Renderer的相关方法
        requestRender();
    }
}