OpenGL ES2学习笔记(5)-- 画线
2013-10-09 18:01
429 查看
画两条线段
在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.5f, -0.2f,-0.2f, -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, 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_LINES, 0, POINT_COUNT)
渲染结果:
代码说明
大部分代码都和前一篇文章一样,这里只说明一下变化的地方。def vertices = [ 0.0f, 0.0f, 0.5f, 0.5f, -0.2f,-0.2f, -0.2f,-0.8f, ] as float[]
vertices包含四个点,前两个点构成一个线段,后两个点构成另外一个线段。
gl.glDrawArrays(gl.GL_LINES, 0, POINT_COUNT)
传入参数GL_LINES,告诉OpenGL我们要画的是线段。POINT_COUNT参数告诉OpenGL一共有4个点需要处理。
改变线段的粗细
OpenGL默认把线段绘制成1像素粗,调用glLineWidth()函数可以改变这个值。gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f) gl.glClear(gl.GL_COLOR_BUFFER_BIT) gl.glLineWidth(8) gl.glDrawArrays(gl.GL_LINES, 0, POINT_COUNT)
相关文章推荐
- OpenGL ES2学习笔记(6)-- Line Strip和Line Loop
- 在显示opengl三维场景的屏幕上也就是windows窗体上画线
- 【OpenGL 学习笔记02】宽点画线
- OpenGL ES2学习笔记(8)-- Varying变量
- OpenGL ES2学习笔记(10)-- Orthographic Projection
- 【OpenGL 学习笔记02】宽点画线
- win32 opengl画线
- 用OpenGL实现DDA画线算法
- Delphi下OpenGL2d绘图之画线的方法
- OpenGL ES2学习笔记(9)-- 转换矩阵
- OpenGL实现画线-线形-线宽转变
- OpenGL ES2学习笔记(1)-- OpenGL Console
- OpenGL画线与点并且控制大小
- OpenGL ES2学习笔记3
- Delphi下OpenGL2d绘图(03)-画线
- OpenGL ES2学习笔记(2)-- Clear Color Buffer
- OpenGL ES2学习笔记(11)--神秘的w
- openGL画线---openGL学习笔记(三)
- OpenGL基于glfw库的画点、画线、画三角
- OpenGL ES2学习笔记(3)-- 使用Shader