加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

(一)计算机图形学 Opengl渲染流程

(2018-03-01 21:17:02)
标签:

it

教育

分类: 计算机图形学

http://s4/mw690/003Apixnzy7iyHJwWKn13&690Opengl渲染流程" TITLE="(一)计算机图形学 Opengl渲染流程" />

本系列文章由@GarFey出品,转载请注明出处。 

 文章链接:http://blog.sina.com.cn/s/blog_c3e21e750102x2xj.html

作者:GarFey    微博:http://blog.sina.com.cn/u/3286376053

一、了解图形渲染原理
二、平衡 cpu gpu 的性能消耗。
三、编写炫酷特效。
四、高薪必备。
Opengl渲染流程:
http://s4/mw690/003Apixnzy7iyHNeUNl93&690Opengl渲染流程" TITLE="(一)计算机图形学 Opengl渲染流程" />


CPU:FBX - Meshrender (FBX通过Meshrender渲染出来)
FBX(模型文件): 包含 uv 顶点位置信息 法线 切线等渲染所需要的信息。
MeshRender: 将这些信息 传递给GPU;skin mesh render / mesh render mesh filter
skin mesh render: 带有蒙皮的骨骼。
mesh render mesh filter: mesh render主要将 顶点等信息传递给gpu。 
mesh filter 表示 将那个模型的信息传递给gpu。
GPU:
渲染管线(道)流程:
顶点着色器 - 光栅化 - 片段着色器 - alpha测试 - 模板测试 - 深度测试 - blend - Gbuffer - frontBufffer - frame Brffer - 显示器

流程步骤详细分析:
顶点着色器:
1. 计算顶点的颜色。
2. 将物体坐标系 转换到 相机坐标系。
光栅化:
将顶点 转换成 像素。
比如由4个顶点组成一个正方形的平面。中间部分用插值补充。
顶点4个 到了 片段着色器 100*100
http://s14/mw690/003Apixnzy7iyI2PAtL4d&690Opengl渲染流程" TITLE="(一)计算机图形学 Opengl渲染流程" />

结论:
顶点着色器 会运行 4次 片段着色器 会运行 10000次。
顶点着色器 和 片段着色器 运算次数不是一个量级。
能把运算 放在顶点着色器 的就放在这里。

片段着色器:(到达此步骤时,顶点已经是像素点了。像素: 由RGBA 4通道组成。)
1. 纹理采样 : 从纹理像素 赋值给 像素。(一张图片纹理像素 赋值给 这个100*100的像素)
2. 像素 跟 灯光计算。

Alpha 测试:挑选合格的 Alpha 像素显示。(满足Alpha的选出来显示,不符合的丢掉不显示)
模板 测试: 像素 还可以携带 模板 信息。(达到条件的模板值显示,否则丢弃)
深度 测试: 符合条件的像素就显示 否则 就不显示。
三个测试总结: 达到三个条件测试的就显示,否则不显示。

Blend: 将 当前要渲染的 像素 和 已经渲染出来的像素 进行 混合运算。

GBuffer:RGBA 模板值 深度值等。(通过测试的会记录到GBuffer里)
Buffer: 缓存区

Front Buffer:float[720*11280] (只写入GBuffer的RGBA , GBuffer大于 FrontBuffer 和 FrameBuffer)
  写入后会推到显示器显示

Frame Buffer: float[720*11280] 
写入后会推到显示器显示

GBuffer、FrontBuffer、FrameBuffer运行流程:
GBuffer选出来的像素,FrontBuffer只写入GBuffer的RGBA,推到显示器显示,之后退到后台变为FrameBuffer;
FrameBuffer同样也会只写入GBuffer的RGBA,推到显示器显示,之后退到后台变为FrontBuffer。如此交替显示,一帧一帧渲染显示,有了动画。



0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有