学过Java的都知道,Java中有九种基本的数据类型,比如int、double、float等等。在glsl中也有一些基本的数据类型,分别为:
数据类型 | 解释说明 |
---|---|
void | no function return value or empty parameter list |
bool | Boolean |
int | signed integer |
float | floating scalar |
vec2, vec3, vec4 | n-component floating point vector |
bvec2, bvec3, bvec4 | Boolean vector |
ivec2, ivec3, ivec4 | signed integer vector |
mat2, mat3, mat4 | 2x2, 3x3, 4x4 float matrix |
sampler2D | access a 2D texture |
samplerCube | access cube mapped texture |
很简单的英文解释,不翻译了。
变量是需要修饰符修饰的,比如在Java中表示一个公开的静态变量,其中的public和static就是修饰符。
public static mData;
修饰符-- | 解释说明 |
---|---|
none | (Default) local read/write memory, or input parameter |
const | Compile-time constant, or read-only function parameter |
attribute | Linkage between a vertex shader and OpenGL ES for per-vertex data |
uniform | Value does not change across the primitive being processed, uniforms form the linkage between a shader, OpenGL ES, and the application |
varying | Linkage between a vertex shader and fragment shader for interpolated data |
Uniform
变量全局可以访问,不可变。
Varying
变量全局可以访问,可变。同一个varying变量。 在Vertex Shader和Fragment Shader中值是一样的,并且值是interpolated的。
我们知道Java中float和double的精度不同,在glsl语言中,变量也是有精度的。
类型 | 精度 |
---|---|
highp | 高精度 |
mediump | 中等精度 |
lowp | 低精度 |