上一篇文章画了两条线段,但是用了4个点。如果几条线段首尾相接的话,可以让OpenGL把他们当成line Strip来画,这样就可以用n+1个点来画n条线段。
代码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; }"""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 = 4def position_ELEMENT_COUNT = 2def POINT_COUNT = 4def vertices = [ -0.2f,-0.8f,-0.2f,0.0f,0.2f,-0.6f,] 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_liNE_STRIP,POINT_COUNT)唯一有必要说明的就是这段代码:
gl.glDrawArrays(gl.GL_liNE_STRIP,POINT_COUNT)传入的参数是 GL_LINE_STRIP而不是 GL_LINES。
效果 line Loop
如果line Strip闭合的话,那么就变成了line Loop。修改上面的脚本,把传递给glDrawArrays()方法的GL_liNE_STRIP参数改成GL_LINE_LOOP:
gl.glDrawArrays(gl.GL_liNE_LOOP,POINT_COUNT)总结
以上是内存溢出为你收集整理的OpenGL ES2学习笔记(6)-- Line Strip和Line Loop全部内容,希望文章能够帮你解决OpenGL ES2学习笔记(6)-- Line Strip和Line Loop所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)