OpenGL ES2学习笔记(5)-- 画线
发布时间:2020-12-14 16:51:55 所属栏目:大数据 来源:网络整理
导读:画两条线段 在OpenGL Console里运行下面的脚本: import java.nio.ByteBufferimport java.nio.ByteOrderimport javax.media.opengl.GLdef vertexShaderCode = """ attribute vec4 a_Position; void main() { gl_Position = a_Position; gl_PointSize = 10.0;
画两条线段在OpenGL Console里运行下面的脚本: import java.nio.ByteBuffer import java.nio.ByteOrder import javax.media.opengl.GL def vertexShaderCode = """ attribute vec4 a_Position; void main() { gl_Position = a_Position; gl_PointSize = 10.0; } """ def fragmentShaderCode = """ precision mediump float; void main() { gl_FragColor = vec4(1.0,0.5,0.0,1.0); } """ def shaderProgram = glob.compileAndLink(vertexShaderCode,fragmentShaderCode) def aPositionLocation = gl.glGetAttribLocation(shaderProgram.objectId,"a_Position") shaderProgram.use() def BYTES_PER_FLOAT = 4 def POSITION_ELEMENT_COUNT = 2 def POINT_COUNT = 4 def vertices = [ 0.0f,0.0f,0.5f,-0.2f,-0.8f,] as float[] def vertexData = ByteBuffer .allocateDirect(vertices.length * BYTES_PER_FLOAT) .order(ByteOrder.nativeOrder()) .asFloatBuffer() vertexData.put(vertices) vertexData.position(0) gl.glVertexAttribPointer(aPositionLocation,? POSITION_ELEMENT_COUNT,gl.GL_FLOAT,false,vertexData) gl.glEnableVertexAttribArray(aPositionLocation) gl.glClearColor(0.0f,0.0f) gl.glClear(gl.GL_COLOR_BUFFER_BIT) //gl.glLineWidth(4) gl.glDrawArrays(gl.GL_LINES,POINT_COUNT)渲染结果: 代码说明大部分代码都和前一篇文章一样,这里只说明一下变化的地方。 def vertices = [ 0.0f,] as float[]vertices包含四个点,前两个点构成一个线段,后两个点构成另外一个线段。 gl.glDrawArrays(gl.GL_LINES,POINT_COUNT)传入参数 GL_LINES,告诉OpenGL我们要画的是线段。POINT_COUNT参数告诉OpenGL一共有4个点需要处理。 改变线段的粗细OpenGL默认把线段绘制成1像素粗,调用glLineWidth()函数可以改变这个值。 gl.glClearColor(0.0f,0.0f) gl.glClear(gl.GL_COLOR_BUFFER_BIT) gl.glLineWidth(8) gl.glDrawArrays(gl.GL_LINES,POINT_COUNT) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |