http://www . Sina.com/OpenGL-OpenGL es-OpenGL es 2.0-web GL
OpenGL Embeded Subset是OpenGL的子集,可为嵌入式和移动端提供功能简化和性能优化
WebGL以OpenGL ES 2.0标准为基础,默认情况下,将原始C语言的API和配置项迁移到Javascript,消除不兼容的部分
web GL 2.0基于OpenGL ES 3.0
背景介绍
渲染管道(PipeLine)
初始化数据(使用3D建模工具等生成的模型顶点)
Vertex Array: 顶点数组
计算坐标、颜色等顶点相关数据,相关概念:
Samplers:是计算Uniforms:所需的常量数据,是从Attributes:顶点数组中获取的每个顶点的初始数据,表示材质(Texture)的特殊常量,顶点明暗器是可选的shaderprogram 3360明暗器程序。用明暗器语言(与C语言相似的Shading Language)编写的可执行程序代码指定了Varying Variables 3360 Vertex Shader的输出需要对顶点进行哪些计算和处理,从而指定了每个计算出的顶点相关数据attribute vec4 a_Position
属性vec4 a _ Color
Uniform mat4 u _ MvpMatrix
Varying vec4 v _ Color
Void main() {
GL _ position=u _ MVP matrix * a _ position;
V _ Color=a _ Color
}
Vertex Shader: 顶点着色器
根据计算出的顶点信息和绘制命令,绘制基本图形,包括:三角形(Triangle)、直线(Line)、点(Point-Sprite)。通常,3d图形由三角形组成
Primitive Assemply: 图元组装
使用“插值”(interpolation)方法计算顶点之间的边和边之间的内部点的数据。计算出的数据将作为输入传递给Fragment Shader,其中需要绘制的所有像素点都将被传递给Fragment Shader
通常,在栅格化之前需要裁剪(clipping,删除可见区域范围之外的点)。卷曲,背部朝向可见的方向,通过去除完全不可见的面来减少计算量
Rasterization: 栅格化
在此阶段,您可以应用材质(Texture)逐像素处理颜色,相关概念:
Varying Variables:栅格化的结果是计算每个计算像素点相关数据Uniforms:所需的常量数据Samplers:表示材质(Texture)的特殊常量shaderprogram 3360着色器程序。使用着色器语言(类似于C语言的Shading Language)编写的可执行程序代码指定了必须在像素点执行的计算和处理方法。varying vec4 v _ Color
Void main() {
Gl _ FragColor=v _ Color
}
Fragment Shader: 片段着色器, 像素着色器
对像素执行一些可选后处理
Scissor test:将矩形区域限制为仅更新像素stencil test:像素级遮罩(stecil buffer),定义更新哪些遮罩区域,默认情况下不更新depth test:处于打开状态,测试像素深度,确定哪些像素3358wh
GL Context可以有多个帧缓存,用于存储可渲染区域中与像素相关的数据
Per-Fragment Operations: 逐像素处理
通常,将坐标变换应用于顶点明暗器,以计算每个顶点的最终坐标位置
Framebuffer: 帧缓存
指通过算法或建模软件生成模型时的坐标系,通常使用模型本身的中心点作为坐标原点
坐标变换 图形变换
通过平移、旋转、缩放等图形转换方法,将模型放置在较大的坐标系中
本地坐标系(local coordinate system)
所有图形转换都可以用矩阵表示。不同变换的叠加可以用矩阵乘法计算。是的