OpenGL Shader

opengl:右手坐标系,矩阵列优先

1,创建着色器对象

glCreateShader

2,着色器对象关联着色器代码

glShaderSource

3,把着色器源代码编译成目标代码

glCompileShader

4,验证着色器是否已经编译通过

glGetShaderiv

glGetShaderInfoLog

5,创建一个着色器程序

glCreateProgram

6,把着色器链接到着色器着色器程序中

glAttachShader

7,链接着色器程序

glLinkProgram

8,验证着色器程序是否链接成功

glGetProgramiv

glGetProgramInfoLog

9,使用着色器程序进行定点或片段处理

glUseProgram

缩放

Cocos2dx中,GLProgramCache类负责初始化并且保存Shader程序,并且为需要渲染的元素提供需要的Shader程序

uniform类型

sampler2D

vec2

vec3

vec4

mat4

uniform vec2 u_XXX[25];

中间输入的变量有v_texCoord

v_fragmentColor

最终显示为gl_FragColor

采用texture2D(sampler2D, vec2)获取坐标元素值

操作:

dot()

OpenGL ES 2.0 Shader

1)加载shader

2)获取指向顶点着色器相应数据的Index

3)根据Index向顶点着色器中传递数据

着色语言是类C语言,支持类型有限

支持的类型有:

float bool int

vec2 vec3 vec4

ivec2 ivec3 ivec4

bvec2 bvec3 bvec4

mat2 mat3 mat4

采样器sampler1D sampler2D sampler3D

OpenGL渲染管线

OpenGL是个状态机

编写Shader的语言为GLSL语言

GLSL着色器代码分为两个部分:vertex shader   fragment shader

有时还会有geometry shader

gl_Color

http://blog.csdn.net/racehorse/article/details/6638455

你可能感兴趣的:(OpenGL Shader)