3D-笔记1

今天,买了OpenGl ES2.0游戏开发,上下两卷。花了158大洋。开始系统地学习3D。

float k=1 错误,glsl语言并不会,把整数1转浮点1.0

//混合选择
vec4 color = vec3(0.7,0.1,0.5,1.0) //rgba  
vec3 temp = color.agb  //temp=(1.0,0.1,0.5)  
vec3 tempL;  
tempL.grb = color.aab //tempL=(0.7,0.7,0.1)  

mat3 md=mat3(2.0)

声明的是mat3(2.0,0.0,0.0,0.0,2.0,0.0,0.0,0.0,2.0),并不是全部赋值2.0

lowp mediump highp 3种精度

precision mediump float 定义全局精度。

attribute:一般用于每个顶点都不同的量,如顶点颜色,位置。

uniform:一般用于对一组顶点组成单个3D物体都相同的量,如光源位置。

varying:用于从顶点着色其传递到片元着色器的量。

const:用于声明常量。

attribute vec3 aPosition;//顶点位置  
attribute vec3 aNormal;//顶点法  
attribute vec2 aTexCoor;//顶点纹理坐标  

顶点着色器:输出变量

gl_Position:经过变换矩阵变换,投影后的顶点位置。  
gl_PointSize:指点的大小。  

片元着色器:内建输人变量

gl_FragCoord:(vec4)含有当前片元相当于窗口位置的坐标值x、y、z、1/w。其中x、y分别为片元相对于窗口的二维坐标,z为该片元的深度值。  
gl_FrontFacing:(bool)通过读取该内建变量的值可以判断正在处理的片元是否属于在光栅化阶段生成的此片元的对应图元的正面。一般用于开发双面光照功能相关的应用程序中。 

片元着色器:内建输出变量

gl_FragColor:(vec4)指计算后,此片元的颜色。此颜色值将送人渲染管线中的后继过程进行处理。  
gl_FragData:(vec4数组)写入时要给入下标:如gl_FragData[0],通过其写入的信息将供渲染管线中的后继过程使用。  
//实际开发中,对上述两个内建输出变量赋值时,应该根据具体情况选择其中一个,不应该同时对两个都进行赋值,若执行了discard操作,则两个内建变量都不需要写入值了。

varying:在顶点着色器赋值后并不是将赋的值送人片元着色器,而是在光栅化阶段由管线根据片元所属图元各个顶点对应的顶点着色器对此易变变量的赋值情况及片元与各顶点的位置关系插值产生。