Opengl ES系列学习--顶点属性、顶点数组和缓冲区对象

本篇博客探讨OpenGL ES 3.0中如何使用新语法指定顶点属性,通过API赋值,并介绍顶点数组和缓冲区对象的使用。示例代码包括Example63Renderer和Example66Renderer,讲解了顶点位置、颜色的赋值方法,以及顶点缓冲区的创建和填充。博客强调了缓冲区在提高程序执行效率中的重要性,并鼓励使用缓冲区而非顶点数组。

     本节我们继续来看一下《OPENGL ES 3.0编程指南 原书第2版(中文版)》书中第6章的内容,PDF下载地址:OPENGL ES 3.0编程指南 原书第2版(中文版),代码下载地址:Opengl ES Source Code。本书中第3、4、5章讲解的是Opengl ES着色器语言的语法知识,没有实例,不过这些语法也是我们掌握Opengl ES的硬功底,万丈高楼平地起,只有基础扎实,才能往上实现出更炫丽的效果。

     第6章一共两个实例,分别对应代码中Example63Renderer、Example66Renderer两个类,先来看一下实现效果。

     效果很简单,就是两个三角形。我们先来看一下Example63Renderer类,该小节主要讲的是通过Opengl ES 3.0的新语法指定顶点属性,然后通过API赋值,其他方法就不看了,主要是onDrawFrame方法,源码如下:

    public void onDrawFrame(GL10 glUnused) {
        // Set the viewport
        GLES30.glViewport(0, 0, mWidth, mHeight);

        // Clear the color buffer
        GLES30.glClear(GLES30.GL_COLOR_BUFFER_BIT);

        // Use the program object
        GLES30.glUseProgram(mProgramObject);

        // Set the vertex color to red
        GLES30.glVertexAttrib4f(0, 1.0f, 0.0f, 0.0f, 1.0f);

        // Load the vertex position
//        mVertices.position(0);
        GLES30.glVertexAttribPointer(1, 3, GLES30.GL_FLOAT,
                false,
                0, mVertices);

        GLES30.glEnableVertexAttribArray(1);
        GLES30.glDrawArrays(GLES30.GL_TRIANGLES, 0, 3);
        GLES30.glDisableVertexAttribArray(1);
    }

     该方法中主要有两句:GLES30.glVertexAttrib4f(0, 1.0f, 0.0f, 0.0f, 1.0f)、GLES30.glVertexAttribPointer(1, 3, GLES30.GL_FLOAT, false, 0, mVertices),这两句代码用来给着色器中的顶点数据赋值,第一个参数就是要赋值的目标对象的ID,为什么分别是0和1呢?上一节我们已经讲过,可以通过调用GLES30.glGetAttribLocati

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

红-旺永福

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值