Android中使用opengl es2.0基础(3)-正方体绘制

这篇博客详细介绍了如何在Android环境下利用OpenGL ES2.0进行正方体的绘制,包括设置顶点坐标,实现纹理贴图以及应用透视投影的技术步骤。
摘要由CSDN通过智能技术生成

Android中使用opengl es2.0基础(3)-正方体绘制

在三角形绘制的基础上,进行正方体的绘制,同时对正方体进行纹理贴图,透视投影的设置。

1.设置正方体顶点坐标:

//正方体顶点坐标
private float s = 0.8f;
private float[] coords = { -s,s,-s,s,s,s,s,s,-s, //023 -s,s,-s,-s,s,s,s,s,s, //012 -s,s,s,-s,-s,s,s,s,s, //152 s,s,s,-s,-s,s,s,-s,s, //256 s,s,s,s,-s,s,s,-s,-s, //267 s,s,s,s,-s,-s,s,s,-s, //273 s,s,-s,s,-s,-s,-s,-s,-s, //374 s,s,-s,-s,-s,-s,-s,s,-s, //340 -s,s,-s,-s,-s,-s,-s,s,s, //041 -s,s,s,-s,-s,-s,-s,-s,s, //145 -s,-s,s,-s,-s,-s,s,-s,s, //546 s,-s,s,-s,-s,-s,s,-s,-s //647 };



2. 纹理贴图

需要先知道纹理贴图的坐标系,以图片的左下角为原点,如下:

设置纹理坐标:

//纹理坐标
    private float[] textureCoord = {

            0,1,1,0,1,1,
            0,1,0,0,1,0,
            0,1,0,0,1,1,
            1,1,0,0,1,0,
            0,1,0,0,1,0,
            0,1,1,0,1,1,
            0,1,0,0,1,0,
            0,1,1,0,1,1,
            0,1,0,0,1,1,
            1,1,0,0,1,0,
            0,1,0,0,1,1,
            1,1,0,0,1,0
    };

加载纹理贴图:

//加载纹理贴图
        texture = TextureUtil.loadTexture(view.getContext(), R.mipmap.ic_launcher);

public static int loadTexture(Context context, int resourceId) {
        //textureObjectIds用于存储OpenGL生成纹理对象的id
        final int[] textureObjectIds = new int[1];
        //1代表生成一个纹理
        GLES20.glGenTextures(1, textureObjectIds, 0);
        //判断是否生成成功
        if(textureObjectIds[0] == 0) {
            Log.e(TAG, "生产纹理对象失败!");
            return 0;
        }
        //加载纹理资源,解码成bitmap形式
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inScaled = false;
        final Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId, options);

        if (bitmap == null) {
            Log.e(TAG, "Resource ID: " + resourceId + " decoded failed");
            //删除指定的纹理对象
            GLES20.glDeleteTextures(1,textureObjectIds, 0);
            return 0;
        }
        //第一个参数代表这是一个2D纹理,第二个参数就是OpenGL要绑定的纹理对象ID,也就是让OpenGL后面的纹理调用都使用此纹理对象
        GLES20.glBindTexture(GLES20.GL_TEXTURE_2D, texture
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值