OpenGL ES2学习笔记(6)-- Line Strip和Line Loop
来源:互联网 发布:java导出excel模板 编辑:程序博客网 时间:2024/05/16 03:38
Line Strip
上一篇文章画了两条线段,但是用了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.2f, 0.0f, 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, 0, vertexData)gl.glEnableVertexAttribArray(aPositionLocation)gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f)gl.glClear(gl.GL_COLOR_BUFFER_BIT)gl.glLineWidth(4)gl.glDrawArrays(gl.GL_LINE_STRIP, 0, POINT_COUNT)唯一有必要说明的就是这段代码:
gl.glDrawArrays(gl.GL_LINE_STRIP, 0, 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, 0, POINT_COUNT)
- OpenGL ES2学习笔记(6)-- Line Strip和Line Loop
- OpenGL ES2学习笔记(5)-- 画线
- OpenGL ES2学习笔记(7)-- 三角形
- OpenGL ES2学习笔记3
- OpenGL ES2学习笔记(1)-- OpenGL Console
- OpenGL ES2学习笔记(2)-- Clear Color Buffer
- OpenGL ES2学习笔记(3)-- 使用Shader
- OpenGL ES2学习笔记(4)-- 画点
- OpenGL ES2学习笔记(8)-- Varying变量
- OpenGL ES2学习笔记(9)-- 转换矩阵
- OpenGL ES2学习笔记(10)-- Orthographic Projection
- OpenGL ES2学习笔记(11)--神秘的w
- h5学习笔记:line-height和height组合居中
- 关于python 的line.strip()方法
- LINE
- line
- line
- line
- It is not safe to rely on the system’s timezone settings
- Linux 3.x 内核学习笔记——x86 64位内存管理
- tomcat的init()与init(ServletConfig config)
- JAVA中JDBC方式访问ORACLE的简单案例
- Windows2008 AD域无法删除组织单位
- OpenGL ES2学习笔记(6)-- Line Strip和Line Loop
- android 定位功能的实现
- 红孩儿工具箱-Honghaier Game Tool
- 硝烟中的Scrum和XP-我们如何实施Scrum 12)发布计划 13)组合XP
- 编译器手动开栈
- hadoop2.0 相关问题(持续更新)
- Unbuntu Android 开发环境搭建
- mysql中子查询limit用法备忘
- 操作系统中,挂起的含义