本节我们继续来看一下《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

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

541

被折叠的 条评论
为什么被折叠?



