赞
踩
WebGL是个状态机,需要先提前设置所有状态,通过DrawCall命令GPU顺着渲染管线来调用设置好的所有状态,最终获得Framebuffer
设置所有状态的过程都是在CPU上跑,DrawCall命令下的渲染管线是GPU上跑
渲染管线存在可编程阶段,可配置阶段,不可配置阶段,可选阶段等
不同厂商实现的渲染管线部分不同
如果存在非均匀缩放变换(Scaling)我们需要使用矩阵的逆的转置来变换法线。
一旦你的顶点坐标已经在顶点着色器中处理过,它们就应该是标准化设备坐标(NDC)了,标准化设备坐标是一个x、y和z值在-1.0到1.0的一小段空间。
着色器里涉及到的关键字有(gl_Position,gl_PointSize,gl_)
attribute变量:用户自定义变量,一般是存储顶点属性的变量;
uniform变量:恒值变量,一般表示每个顶点都一致的变量,比如变换矩阵、光照等;
varying变量:易变变量,将顶点着色器的数据传递给片段着色器时使用;
顶点的xyz靠近远平面(还没除w);
把坐标的x、y、z分量不全在(-1,1)区间内的图元(或者图元的部分)抛弃掉
线段的两个顶点一个位于视椎体内而另一个位于视椎体外,那么位于外部的顶点将被裁剪掉,而且在视椎体与线段的交界处产生新的顶点。
用户可以指定额外的裁剪面:glClipPlane(GL_CLIP_PLANE0[1,2,…],double eqn[4]),glEnable/Disable(GL_CLIP_DISTANCE0[1,2,…]
各种测试(下图中共5个),每步测试,不通过的片断将被丢弃从而不能进入后续操作,然后进行一些操作(如混合),最终通过所有处理的片断将被写入FrameBuffer用于最终屏幕显示
这些操作可以用glEnable/glDisable(GL_ALPHA/STENCIL/DEPTH_TEST)、glEnable/glDisable(GL_BLEND)等打开或关闭,对于RGBA, Depth, Stencil Buffer,可以用glColor/Depth/StencilMask(GLboolean/GLuint)进行控制是否可写。
(1条消息) OpenGL——GPU图形渲染管线_&动感超人的博客-CSDN博客
细说图形学渲染管线 - 知乎 (zhihu.com)
WebGL学习笔记(一):理解基本概念和渲染管线 - 阿诚de窝 - 博客园 (cnblogs.com)
(1条消息) 关于DrawCall及渲染流程的认识总结_GR90的博客-CSDN博客
(1条消息) WebGL—实现使用FBO离屏渲染(亦同拷贝纹理)off-screen rendering的两种方式_weixin_43787178的博客-CSDN博客
https://zhuanlan.zhihu.com/p/65969162
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。