着色器语言

​ 着色器语言基于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 精度 类型

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

openGLES(三)的更多相关文章

  1. OpenGLES入门笔记三

    在入门笔记一中比较详细的介绍了顶点着色器和片面着色器. 在入门笔记二中讲解了简单的创建OpenGL场景流程的实现,但是如果在场景中渲染任何一种几何图形,还是需要入门笔记一中的知识:Vertex Sha ...

  2. OpenGLES入门笔记一

    学习地址:http://www.raywenderlich.com/3664/opengl-tutorial-for-ios-opengl-es-2-0 中文翻译:http://www.cnblogs ...

  3. [ios][opengles]GLKit如何搭一个app的框架

    一个外文对GLKit的讲解: Beginning OpenGL ES 2.0 with GLKit Part 1    英文原文链接:http://www.raywenderlich.com/5223 ...

  4. 【转】iOS-Core-Animation-Advanced-Techniques(三)

    原文: http://www.cocoachina.com/ios/20150105/10827.html 专用图层 复杂的组织都是专门化的--Catharine R. Stimpson 到目前为止, ...

  5. OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的!

    OpenGLES 怎样在十天内掌握线性代数 - 希望这是真的! 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致&q ...

  6. Android OpenGL教程-第三课【转】

    第三课 给多边形上色: 作为第二课的扩展,我将叫你如何使用颜色.你将理解两种着色模式,在左图中,三角形用的是光滑着色,四边形用的是平面着色. 这次增加的代码不算多. 增加一个color的buffer ...

  7. 【转】玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo

    http://blog.csdn.net/yanzi1225627/article/details/33339965 GLSurfaceView是OpenGL中的一个类,也是可以预览Camera的,而 ...

  8. iOS实现图形编程可以使用三种API(UIKIT、Core Graphics、OpenGL ES及GLKit)

    这些api包含的绘制操作都在一个图形环境中进行绘制.一个图形环境包含绘制参数和所有的绘制需要的设备特定信息,包括屏幕图形环境.offscreen 位图环境和PDF图形环境,用来在屏幕表面.一个位图或一 ...

  9. 玩转Android Camera开发(三):国内首发---使用GLSurfaceView预览Camera 基础拍照demo

    GLSurfaceView是OpenGL中的一个类,也是能够预览Camera的,并且在预览Camera上有其独到之处. 独到之处在哪?当使用Surfaceview无能为力.痛不欲生时就仅仅有使用GLS ...

随机推荐

  1. noip 2018 day1 T3 赛道修建 贪心_树上问题_multiset

    Code: // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; #define maxn 5000 ...

  2. 使用python制作二维码

    python-qrcode是个用来生成二维码图片的第三方模块,主要依赖的是 PIL 模块和 qrcode 库.(PIL模块只支持python2.7及以下版本,python3之后无法使用,官方推荐pyt ...

  3. 【js基础】判断是否是合法邮箱地址(正则表达式的应用)

    2019-01-21 09:11:21 <!DOCTYPE html> <html> <head> <meta charset="utf-8&quo ...

  4. Spring 热点面试题:

    1.谈谈你对Springaop的理解? spring用代理类包裹切面,把他们织入到Spring管理的bean中.也就是说代理类伪装成目标类,它会截取对目标类中方法的调用,让调用者对目标类的调用都先变成 ...

  5. 紫书 习题 10-25 UVa 1575 (有重复元素的全排列+暴搜)

    我一开始以为有什么很牛逼的方法来做,然后一直没有思路 后来看了https://blog.csdn.net/zju2016/article/details/78562932的博客 竟然是暴搜?????? ...

  6. openstack-dashboard开发环境搭建

    1,在开发过程中,一般都要,将dashboard这个组件单独执行在自己的本地的linux系统中(Ubuntu或centos),那个比較顺手用哪个.假设不习惯,能够用vmwareworkstation安 ...

  7. StdTranslator - Translate PDMS to STD for STAAD.Pro

    StdTranslator - Translate PDMS to STD for STAAD.Pro eryar@163.com STAAD.Pro是由美国世界著名的工程咨询和CAD软件开发公司—R ...

  8. Android上玩玩Hook?

    在中国互联网这片弱肉强食的丛林中.封闭抄袭是垄断巨头的通行证.创新是弱小创业者的墓志铭. 了解Hook 还没有接触过Hook技术读者一定会对Hook一词感觉到特别的陌生.Hook英文翻译过来就是&qu ...

  9. 关于Maven报错的一些解决办法(别处贴的)

    1.警告:The tag handler class for "s:form"(org.apache.struts2.views.jsp.ui.FormTag) was not f ...

  10. Windows下快速安装CACTI流量监控

    Windows下快速安装CACTI流量监控 原文  http://os.51cto.com/art/201111/300977.htm CACTI是一套PHP程序,它利用SNMPGET采集数据,使用R ...