视频链接:游戏开发入门(三)图形渲染(3节课 时常:约2小时20分钟)
视频链接:一堂课学会shader——渲染拓展课程(3节课 时常:约1小时20分钟)
笔记与总结(请先学习视频内容):
游戏开发入门(三)图形渲染笔记:
渲染一般分为离线渲染与实时渲染,游戏中我们用的都是实时渲染。
1.实时渲染又可以分为2D渲染与3D渲染。
早期的2D渲染,是通过把一块内存(图片像素数据)往另一块(显示缓冲区)上搬运的方式,实现图片绘制的。
不过现在很多2D渲染的渲染方式已经采用3D渲染了。原因是当前显卡从架构上就利于并行处理,绘制速度更快,可以很方便提供各种3D效果,还节省图片资源内存。
3D的渲染简单概括一下,就是把一个空间中的模型所有点的数据取出来,经过空间转换到2维屏幕上,然后根据各项参数与数据在绘制到屏幕上。
现在几乎所有的游戏都是使用3D的渲染流程。
2.3D渲染中基本单位就是顶点,顶点数据信息包括如下
- 位置(相对模型位置)
- 颜色(可有可无,可以在后面再处理)
- 法线(主要是用于光照计算,可以知道哪边是背光)
- 骨骼权重(一个点可能跟随多个骨骼运动)
- 贴图UV
3.MipMap 一般自动生成,远处的角色自动使用小的贴图,减少不必要的开销
MipMap生成时由于边缘问题可能产生混色,所以一个贴图明显不同的地方可以留几个像素
4.DX 微软的图形编程API,着色语言是High Level Shader Language(HLSL),只能在Windows使用
OpenGL(OpenGraphicsLibrary) 着色语言是OpenGL Shader Language(GLSL)跨编程语言,跨平台
5.DX8与OpenGL2.0以后就都支持可编程渲染管线
vertexShader与pixelShader。现在更新的版本还支持GeometryShader
6.ES2.0管线流程
顶点buffer数据——Vertex Shader——PrimitiveAssembly(图元装配)—— 【如果有的话GeometryShader】 Rasterization 光栅化——Fragment Shader(即Pixel Shader)——PerFragementOperation——FrameBuffer
7.ES2.0管线简述
Vertex Shader
顶点变换 移动,旋转,缩放,坐标系转换