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
- OpenGLES---OpenGL运行原理
- OpenGLES/OpenGL 区别
- opengl opengles学习资源
- opengl 与 opengles 的区别
- OpenGLES---初始化OpenGL-ES环境
- OpenGLES---初始化OpenGL-ES环境
- OpenGLES与OpenGL的区别
- opengles透视矩阵投影原理
- Opengles 显示文字 (Opengl ES笔记)
- OpenGLES中替代OpenGL的函数
- 将OpenGL代码移植成OpenGLES
- 将OpenGL代码移植成OpenGLES
- 将OpenGL代码移植成OpenGLES
- 将OpenGL代码移植成OpenGLES
- OpenGLES::体验OpenGL ES的乐趣
- opengl opengles 版本对应的时间
- opengles
- opengles
- java常用设计模式
- java内部类
- 哈夫曼树的c++实现
- Vungle SDK奖励回调机制详解——1
- (4.1.27.8)JNI/NDK开发指南(五)——Jni打包及引用aar
- OpenGLES---OpenGL运行原理
- 如何将Powerpoint文档转换为Word文档
- Android 在非主线程中更新UI也能成功原因详解
- Java编程中的equals方法使用全解
- Android 使用Nexus 进行项目管理
- HDU 2544 最短路(floyed dijkstra 都能过)
- Map.EntrySet的用法
- Oracle的时间差写法
- Spring3 MVC请求参数获取的几种方法