安卓中绘制2D、3D图形

本文介绍了在安卓开发中使用OpenGL ES进行2D和3D图形绘制的基本步骤。从概述OpenGL与OpenGL ES的区别,到详细讲解2D图形的绘制过程,包括创建GLSurfaceView,实现MyRenderer并重写相关方法。然后,通过修改Renderer实现3D图形绘制,利用glDrawElements组织三维空间顶点。示例代码简单明了,适合初学者参考。
摘要由CSDN通过智能技术生成

一、概述

偶然看到一个游戏的人物动画,联想到在安卓中绘制3D图形,因为基本在平时的开发中基本都是用canvas绘制自定义View,很少使用这些图形的绘制,因此借此机会练练基本操作,国际惯例看下运行效果

运行效果
这个gif有BUG,开始我以为没录上,所以期动后愣了一会才反应过来,所以有一些卡顿,凑活看吧。。。。

二、OpenGL与OpenGL ES

OpenGl的全称 Open Graphics Library即开放的图形接口,它定义了一个跨编程语言、跨平台的编程接口规范,它主要用于三维图形的绘制,但在手机等手持终端上运行OpenGl有些不太合适,因此安卓系统内置的是OpenGL ES。

三、2D图形的绘制

先来点简单的部分,万一直接来复杂的部分,吓跑同学怎么办。。。
在Activity中使用:

  @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        GLSurfaceView glSurfaceView = new GLSurfaceView(this);
        MyRenderer renderer = new MyRenderer();
        glSurfaceView.setRenderer(renderer);
        setContentView(glSurfaceView);
    }

代码很简单,仔细看代码,就可以看出来里面除了创建GLSurfaceView的对象外,只有MyRenderer,一看便知道基本代码中以My开头的类,都是自己实现的子类,所以2D图形绘制也一样,最主要的就是提供一个Renderer;

public class MyRenderer implements GLSurfaceView.Renderer {


    public MyRenderer() {
       triangleDataBuffer = floatBufferUtil(triangleData);
        rectDataBuffer = floatBufferUtil(rectData);
        rectDataBuffer2 = floatBufferUtil(rectData2);
        pentacleBuffer = floatBufferUtil(pentacle);
        triangleColorBuffer = intBufferUtil(triangleColor);
        rectColorBuffer = intBufferUtil(rectColor);

    }

    @Override
    public void onSurfaceCreated(GL10 gl, EGLConfig config) {
        //关闭抖动
        gl.glDisable(GL10.GL_DITHER);
        //设置系统透视修正
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);
        //清除背景
        gl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值