[OpenGL]从零开始写一个Android平台下的全景视频播放器——1.2 用OpenGL ES 2.0画一个三角形

Github项目地址,欢迎star~!

为了方便没有准备好梯子的同学,我把项目在CSDN上打包下载,不过更新会慢一些

回到目录

初始化OpenGL ES环境

OpenGL ES的使用,一般包括如下几个步骤:
1. EGL Context初始化
2. OpenGL ES初始化
3. OpenGL ES设置选项与绘制
4. OpenGL ES资源释放(可选)
5. EGL资源释放

Android平台提供了一个GLSurfaceView,来帮助使用者完成第一步和第五步,由于释放EGL资源时会自动释放之前申请的OpenGL ES资源,所以需要我们自己做的就只有2和3。

使用GLSurfaceView

首先,我们在主布局中引入一个GLSurfaceView,并让他充满整个布局,并在Activity中获取他的实例

<android.opengl.GLSurfaceView
        android:id="@+id/surface_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
public class MainActivity extends AppCompatActivity {
   

    private GLSurfaceView glSurfaceView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        glSurfaceView= (GLSurfaceView) findViewById(R.id.surface_view);
    }
}

获取实例以后,我们就可以对于这个GLSurfaceView进行配置:

glSurfaceView.setEGLContextClientVersion(2);
glSurfaceView.setRenderer(new GLRenderer());
glSurfaceView.setRenderMode(GLSurfaceView.RENDERMODE_CONTINUOUSLY);

第一行是设置EGL上下文的客户端版本,因为我们使用的是OpenGL ES 2.0,所以设置为2
第二行代表渲染模式,选项有两种(大家应该能看懂英文的介绍),一个是需要渲染(触控事件,渲染请求)才渲染,一个是不断渲染。

 /**
     * The renderer only renders
     * when the surface is created, or when {@link #requestRender} is called.
     *
     * @see #getRenderMode()
     * @see #setRenderMode(int)
     * @see #requestRender()
     */
    public final static int RENDERMODE_WHEN_DIRTY = 0;
    /**
     * The renderer is called
     * continuously to re-render the scene.
     *
     * @see #getRenderMode()
     * @see #setRenderMode(int)
     */
    public final static int RENDERMODE_CONTINUOUSLY = 1;

这个GLRenderer是个什么鬼?其实这是我们自定义的一个类,

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值