美文网首页
GLSL基本语法以及GLSL类型修饰符

GLSL基本语法以及GLSL类型修饰符

作者: LogyKoala | 来源:发表于2018-03-10 18:36 被阅读0次

1、GLSL是什么

        GLSL是图形开发语言(专门为图形开发设计的编程语言)

2、语法

        1、说到语法肯定要先从注释说起

            单行注释://

            多行注释:/* */

        2、说到注释怎么少得了命名规范(毕竟不是一个人开发东西,而且如果命名不规范后面维护很痛苦)

            1 )数字和下划线不能为变量的第一个字符

            2 )变量名不能包含连续的下划线

            3 )系统变量都是以 gl 开头,不允许我们在变量名、类名、常量、方法中以 gl 开头(以gl开头会影响自己的水准的哦

            4 )见名知意

3、真正的语法来了(上面的真的很重要)

        1、基本数据类型,以及他们的定义与初始化

            1 )基本数据类型(  float、int、bool )

            2 )定义与初始化

            int i=1500;

            float f =9.0f;(float类型必须要有小数点并且数字后面要加f)

            bool b =true;

        2、聚合数据类型 - 向量(向量:有方向有大小的变量)

向量的表示

            上面的图是向量的表示方法,我们般用到的是float类型,那么说完向量的表示方法就在说下它的定义、初始化、如何赋值、与如何取值吧(这里我就以float的3D向量为例其他都是一样的)

            1 ) 首先是初始化与定义

                1.vec3 xyz =vec3(0.0f,0.1f,0.3f);

                2.vec3 xyz =vec3(0.0f,0.1f,0.3f);

                    vec4 rgba =vec4(xyz,0.1f);

            2 ) 取值和赋值(vec3 xyz =vec3(0.0f,0.1f,0.3f);)

                取值:xyz.x;

                赋值:xyz.x =0.1f;

            3、聚合数据类型 - 矩阵

            同向量这里直接说矩阵的定义与初始化

            1 )mat3 m = mat3(1.0f , 2.0f , 3.0f, 4.0f , 5.0f ,6.0f , 7.0f , 8.0f , 9.0f );

            矩阵的填充是先填充列在填充行,以上面的m为例,他用矩阵显示出来就是下面的形式

            2 )矩阵也可以用向量来表示如下

                vec3 v1 =vec3(1.0f , 2.0f , 3.0f)

                vec3 v2 =vec3(4.0f , 5.0f , 6.0f) 

                vec3 v3 =vec3(7.0f , 8.0f , 9.0f)

                mat3 m =mat3(v1 , v2 , v3);

            3 )矩阵元素的访问形式(mat3 m = mat3(1.0f , 2.0f , 3.0f, 4.0f , 5.0f ,6.0f , 7.0f , 8.0f , 9.0f ) )

                vec3 xyz =m[1] =(1.0f , 2.0f , 3.0f); 这种形式是访问矩阵中的某一列

                 float s =m[1][1] =1.0f;这种形式是访问矩阵的具体某一个元素

4、结构体

         1 、结构体:从逻辑上讲不同的类型的数据组到一个数据集合中

        2、作用:方便使用,简单运算

        3、定义: struct info{ vec3 color; vec4 xyzw}

        4、使用:

            info p =info(...)

            p.color;

5、类型修饰符

        1 )attribute (只能出现在顶点着色器中(vertex  shader ) 用来表示顶点数据)

        注意:1.只能出现在顶点着色器中

                    2.只能用来修饰float 类型的变量,不能修饰其他类型的变量

         2 )uniform :从宿主语言将我们需要的变量传递到GLSL中,主要出现在顶点(vertex shader)和片元(fragment shader)着色器

        3 )varying 用来传递顶点着色器(vertex shader)中的数据到片元(fragment shader)中

        4 )const 常量值不可变

        5 )in、out 、inout

            in修饰输入变量

            out修饰输出变量

            inout修饰输入输出变量

相关文章

网友评论

      本文标题:GLSL基本语法以及GLSL类型修饰符

      本文链接:https://www.haomeiwen.com/subject/ealcxxtx.html