当前位置:   article > 正文

OpenglES语法以及绘制三角形

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、将编译后的着色器对象连接到程序对象

  1. GLES20.glAttachShader(mProgramObjectId, vertexShaderObjectId);
  2. GLES20.glAttachShader(mProgramObjectId, fragmentShaderObjectId);

6、链接程序对象

  1. GLES20.glLinkProgram(mProgramObjectId);
  2. GLES20.glUseProgram(mProgramObjectId);

绘制三角形四边形demo

 

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/574058
推荐阅读
相关标签
  

闽ICP备14008679号