OpenglES语法以及绘制三角形

一、基本变量

GLSL 的语法与 C 语言很类似,可以用变量、结构体、数组(GLSL 中没有指针类型)

变量类别

变量类型

描述

void

用于无返回值的函数或空的参数列表

标量

float, int, bool

浮点型,整型,布尔型的标量数据类型

浮点型向量

float, vec2, vec3, vec4

包含1,2,3,4个元素的浮点型向量

整数型向量

int, ivec2, ivec3, ivec4

包含1,2,3,4个元素的整型向量

布尔型向量

bool, bvec2, bvec3, bvec4

包含1,2,3,4个元素的布尔型向量

矩阵

mat2, mat3, mat4

尺寸为2x2,3x3,4x4的浮点型矩阵

纹理句柄

sampler2D, samplerCube

表示2D,立方体纹理的句柄

二、限定符(只列出比较常用的存储限定符和精度限定符)

1、存储限定符

 

限定符

描述

< none: default >

局部可读写变量,或者函数的参数

const

编译时常量,或只读的函数参数

attribute

用于顶点着色器中,存储顶点着色器中每个顶点的输入(位置坐标、法向量、纹理坐标和颜色等)

uniform

在图元处理过程中其值保持不变,由应用程序传输给着色器

varying

由顶点着色器传输给片段着色器中的插值数据

 

2、精度限定符

OpenGL ES 与 OpenGL 之间的一个区别就是在 GLSL 中引入了精度限定符。

限定符

描述

highp

满足顶点着色语言的最低要求。对片段着色语言是可选项

mediump

满足片段着色语言的最低要求,其对于范围和精度的要求必须不低于lowp并且不高于highp

lowp

范围和精度可低于mediump,但仍可以表示所有颜色通道的所有颜色值

三、绘制三角形

Opengl ES2.0开始使用glsl语言来描述顶点着色器和片段着色器。

OpenGL渲染图形需要着色器对象(顶点着色器和片段着色器)和程序对象,着色器对象和程序对象就相当于c语言的编译器和连接程序,OpenGL先将源程序编译为目标程序(.obj或.o),然后再将其链接为最后的可执行程序。大体步骤如下:

1、创建顶点着色器对象和片段着色器对象

int shaderObjectId = GLES20.glCreateShader(type);

type类型可以是GLES20.GL_VERTEX_SHADER或GLES20.GL_FRAGMENT_SHADER

2、将源代码链接到每个着色器

GLES20.glShaderSource(shaderObjectId, shaderCode);

shaderCode就是glsl编写的源代码

3、编译着色器对象

GLES20.glCompileShader(shaderObjectId);

4、创建一个程序对象

mProgramObjectId = GLES20.glCreateProgram();

5、将编译后的着色器对象连接到程序对象

GLES20.glAttachShader(mProgramObjectId, vertexShaderObjectId);

GLES20.glAttachShader(mProgramObjectId, fragmentShaderObjectId);

6、链接程序对象

GLES20.glLinkProgram(mProgramObjectId);

GLES20.glUseProgram(mProgramObjectId);

绘制三角形四边形demo

 

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值