OpenGLES---OpenGL运行原理

来源:互联网 发布:海南网络小贷牌照 编辑:程序博客网 时间:2024/06/05 07:36



{固定管线1:VertexData    顶点数据2:model matrix  模型矩阵3:view matrix   观察矩阵4:Projection Matrix 投影矩阵5:Divide byw 标准化设备坐标系6:Viewport Transform  视口Object Coordinates模型坐标系,也叫Local坐标系。例如我们3DMax,Maya等建模工具建立人物模型时,模型中的顶点坐标值就是model坐标系的值,设想我们有好多个模型,那么每-个模型都有属于自己的model坐标系Eye Coordinates   Camera坐标系是人的眼观察World坐标系时,以人眼为原点,视线方向为Z轴建立的新坐标系,  这个坐标系以观察者(眼睛)为中心,为视野裁切和投影等做好铺垫,随着观察者眼睛位置的变化  ,或者视线方向的变化,Camera坐标系也同时变化Projection Matrix 投影矩阵  Projection即投影坐标系基于Camera坐标系变化而来的新坐标系,这个新坐标系把视野外的东西剔除掉,  把视野内的东西投影到屏幕(进裁面)上,并且离眼睛越远的东西看起来越小Divide byw 标准化设备坐标系它更像是窗口坐标系,只是还没有转换或者缩小到屏幕像素Windows Coordinates(窗口坐标系)/ Screen Coordinates(屏幕坐标系)将标准化坐标系(NDC)应用于视口转换,NDC将缩小和平移以便适应屏幕的透视1:VertexData-----Object Coordinates(平移,旋转,缩放)---->2:model matrix----Eye Coordinates-->3:view matrix------->4:Projection Matrix----Clip Coordinates-----> 5:Divide byw-----Normalired Device Coordinatos----> 6:Viewport Transform---Windows Coordinates-->}




{渲染流程API -->1:Vertex Arrays/Buffer Objects  // 顶点缓冲区对象vbo/顶点数组对象vao    -->2:VertexShader //顶点Shader    -->3:PrimitiveAssembly //图元装配    -->4:Rasterization //光栅化    -->5:FragmentShader //片段Shader    -->6:Per-FragmentOperations //美像素操作    -->7:Framebuffer //输出画面到缓冲区    1:Vertex Arrays/Buffer Objects     2:VertexShader //顶点Shader    空间坐标:就是把三维坐标转成屏幕坐标    纹理:生成并变换纹理坐标光照:综合变换后顶点,表面法线,光源位置,材料属性以及其他光照信息进行光照计算    3:PrimitiveAssembly //图元装配    图元装配的一个主要内容就是剪裁,点剪裁就是简单地接受或拒绝顶点    4:Rasterization//光栅化    就是把几何数据和像素数据转换成片断(FragmentShader)的过程。    每个片断块对应于帧缓冲区中一个像素。    把顶点连接起来形成直线或者计算填充多边形的内部像素时,需要考虑直线和多边形的点画模式,直线的宽度,点的大小,着色模型以及用于支持抗锯齿处理的覆盖计算,每个片断方块都将具有各自的颜色和深度    5:FragmentShader 片段Shader    在数据实际存储到帧缓冲区之前,将要执行一系列的操作。    这些操作可能会修改甚至丢弃这些片断,所有这些操作都可以被启动或禁用。    第一个可能执行操作时纹理处理,在纹理内存中为每个片断生成一个纹理单元(texel,也就是纹理元素),并应用到这个片断上。    接着可能进行的是雾计算,然后是剪裁测试,alpha测试,模板测试和深度缓冲区测试。    如果一个片断无法通过一个启用的测试,它的连续处理过程可能会被中断。随后,将要执行的可能是混合,抖动,逻辑操作以及    根据一个位掩码的屏蔽操作。最后,进过完整处理的片断就被绘制到适合的缓冲区,最终成为一个像素并到达它的最终栖息地    6:Per-FragmentOperations //美像素操作    7:Framebuffer  }


需要写代码的

-->2:VertexShader //顶点Shader
-->5:FragmentShader //片段Shader




0 0
原创粉丝点击