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插件;这个插件只能提示语法错误,变量可以不存在,方法也可以不存在。。。

Opengl es shading language_第1张图片
shader插件

shader 编写

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

layout 定义了索引

in 输入

out 输出

gl_ 开头的 : 系统内嵌变量


Opengl es shading language_第2张图片
简单shader示例

你可能感兴趣的:(Opengl es shading language)