Opengl es shading language

着色器语言学习推荐:3.0文档,对应opengl es 3.0(默认1.0 对应opengl es 2.0)

概述

着色器语法和c/C++类似

包括变量类型、关键字、修饰符、内嵌函数、内嵌特殊变量、内嵌常量、宏、预处理指令等主要内容

如果是做游戏开发,写shader脚本,上面内容都要精通;但是不做游戏开发,知道变量类型,关键字,修饰符,和一些特殊内嵌特殊变量就可以了;因为你也不需要写复杂的shader脚本。。。


对于有语言基础的,上述都很容易学习;就算忘记了,看一遍就ok了

特别注意

1、着色器版本(好像不同版本不兼容最好遵守各自语法)

#version 300 es  或者不声明

3.0中一个程序必有一个vetex shader 和一个fragment shader组成,且它们版本必须一致

2、变量赋值

变量构造器赋值

变量不可隐式转换,使用构造器转换

3、layout 限定符

直接指定location,不需要opengl es查找位置

4、out 和in

vetex shader 的out 要在fragment shader 中同样定义(out --> in)

5、fragment shader需要设置精度

 percision mediump float 所有float类型精度设这

mediump float a   变量a精度

6、shader 内嵌变量

以gl_开始

gl_Position : vetex shader中的vetex 位置

简单示例

我是一个android开发者,所以这里在AS写时,需要安装shader插件;这个插件只能提示语法错误,变量可以不存在,方法也可以不存在。。。

shader插件

shader 编写

main函数,当shader被编译后,执行的主体

layout 定义了索引

in 输入

out 输出

gl_ 开头的 : 系统内嵌变量


简单shader示例
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 渲染管线 苹果提供了两种OpenGL ES的可视化模型,一种是客户端—服务端的架构模型,另一种就是管线的模型。 客...
    sellse阅读 12,209评论 1 10
  • 本文首发于个人博客:Lam's Blog - 【OpenGL ES】入门及绘制一个三角形,文章由MarkDown语...
    格子林ll阅读 7,389评论 2 18
  • 生活中, 我遇到了很多人, 一个 一个擦肩而过! 只有遇到了你, 我才知道了啥叫知已, 我才知道了什么是快乐! 知...
    山楂树123阅读 596评论 0 2
  • 今天突然在一个我们老家县城的信息平台上看到一篇文章,主人公是我的姥爷,看着看着我就止不住的眼泪流了出来,让我又掀起...
    李潇婵阅读 630评论 0 7
  • 我知道 寒夜里的星星很漂亮 一闪一闪 明亮动人 我知道 左手无名指上的钻石很动人 一闪一闪 灿动人心 我更知道 幸...
    燕仔于飞阅读 518评论 0 3