zoukankan      html  css  js  c++  java
  • openGLES(三)

    着色器语言

    ​ 着色器语言基于c/c++语言,但是还是有区别的,它不是面向对象

    数据类型概述

    ​ 内建的数据类型:浮点型(float)、布尔型(bool)、整形(int),矩阵(matrix)以及向量(vec2,vec3),类型可以分为标量、向量、矩阵、采样器、结构体以及数组等几类

    • 标量

      标量成为无向量,只有大小,无方向

      1. 布尔类型bool

      2. 整形int 参数可以是十进制、八进制、十六进制

      3. float类型

    • 向量

      有大小,有方向

      分类也分为bool/int/float类型

      1. vec2 vec3 vec4 浮点型的向量

      2. ivec2 ivec3 ivec4 整形的向量

      3. bvec2 bvec3 bvec4 布尔向量


      变量赋值:

      通过.进行赋值 ,也可以通过下标进行赋值

    • 矩阵

      mat2 mat3 mat4可以通过下标进行值的设置和获取

    • 采样器

      主要来执行纹理操作时的采样操作。一个采样器代表一个贴图

      sampler2D 访问二维纹理

      sampler3D 访问三维纹理

      samplerCube 立 方贴图纹理

    • 机构体

      struct info{

      ​ vec3 color;

      ​ vec3 position;

      }

      info s;

    • 数组

      vec3 positon[20];

    • 空类型

      void main(){}

    • 数据类型的基本操作


      int a,b;
      a=1; b=3;
      int c = a+b;

      向量的书写


      float a =12.3;
      float b =11.3;
      vec2 va = vec2(2.3,3.2);
    • 限定符

      • attribute

        attribute:属性限定符,接收渲染管传输的属性。用于传输顶点、纹理、颜色、法向量等。它的值通过java传进渲染管,管线进行基本处理之后在传递着色器。数据中有多少个顶点,就知心多小次着色器。,每次只传递一个参数就会调用一次,每次完成一个顶点的数据。


        顶点着色器会一个点一个点的处理,那么如果点非常多的时候,这个操作是很浪费时间的,现在的GPU都不是使用一个着色器硬件,数量是很多的,所以速度会很大的提升。

      • uniform限定符

        一致变量的限定符,就所有的都使用同一个量

        传入值的时候,可以传入浮点、整数、矩阵

      • varying

        需要加工顶点着色器中的参数传入到片段着色器就要使用varying,他会产生一个渐变的效果。

      • 流程管理

        if-else条件语句

        while/do-while

        for循环

      • 函数

        in:表示传入数据

        out:传出数据

        inout:具有输入和输出功能

      • 片元着色器精度

        lowp mediump highp

        precision 精度 类型

      • 内建变量:输出内建变量,输入内建变量,在着色器中的一般为输出变量

  • 相关阅读:
    mysql字符集设置
    mysql解压版服务启动方式
    html的表格边框为什么会这么粗?
    通过js获取tinymce4.x的值
    bzoj 3083 树链剖分
    bzoj 1143 二分图最大独立集
    bzoj 2303 并查集
    可持久化数据结构讲解
    bzoj 1072 状压DP
    bzoj 2741 可持久化trie
  • 原文地址:https://www.cnblogs.com/kw28188151/p/10691105.html
Copyright © 2011-2022 走看看