加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

OpenGL ES2学习笔记(5)-- 画线

发布时间:2020-12-14 16:51:57 所属栏目:大数据 来源:网络整理
导读:画两条线段 在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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读