老
孟
一个
有态度
的程序员
永远缅怀,曼巴精神
下面将会完成绘制一条线,线的颜色由应用程序确定,顶点shader代码如下:
attribute vec4 vPosition;
vPosition是顶点,由应用程序传入。
片段shader代码如下:
precision mediump float;
u_color 表示线的颜色,由应用程序传入。
创建program:
fun createProgram() {
line_vs.glsl和line_fs.glsl分别表示顶点shader和片段shader的文件,存放于assets/glsl目录下,readAssetsTxt为读取assets目录下文件的公用方法。
获取参数句柄:
vPositionLoc = GLES20.glGetAttribLocation(mProgramHandle, "vPosition")
初始化线的顶点数据,代码如下:
val vertexBuffer = GLTools.array2Buffer(
初始化线的颜色数据,代码如下:
val colorBuffer = GLTools.array2Buffer(
绘制:
override fun onDrawFrame(gl: GL10?) {
设置顶点数据和颜色数据,GLES20.GL_LINES表示绘制线。
线的绘制有3种方式:
GL_LINES:俩俩组成一条直线,比如上面的4个点分别编号为1,2,3,4,1和2组成一条直线,3和4组成一条直线,如果点点个数为奇数,那么最后一个点将会抛弃。
GL_LINE_STRIP:还是上面的4个点,1和2,2和3,3和4各组成一条直线。
GL_LINE_LOOP:和GL_LINE_STRIP相比多了一个最后一个点和第一个点的连线。
效果图如下:
更多相关阅读:
长
按
解
锁
关注我们
获得更多精彩内容
戳原文,查看OpenGL ES for Android 总览
本文分享自微信公众号 - 老孟Flutter(lao_meng_qd)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。