OutLine查阅的资料http://geoffprewett.com/blog/...博客语言:openGL包含顶点着色器和片段着色器代码http://jsfiddle.net/Eskel/g59...CoffeScriptthreejs实时小网页页面,使用composerhttps://github.com/jeromeetie...大纲实现,但使用threex(threejs游戏扩展包)https://learnopengl-cn.github...OpenGl中文网关于模板测试的相关原理https://github.com/stemkoski/...缩放网格实现轮廓,对比模板测试思路大致相同webgl使用模板测试函数render(){gl.enable(gl.STENCIL_TEST);gl.stencilOp(gl.KEEP,gl.KEEP,gl.REPLACE);渲染器.clear();gl.stencilFunc(gl.ALWAYS,1,0xff);gl.stencilMask(0xff);renderer.render(scene,camera)gl.stencilFunc(gl.NOTEQUAL,1,0xff);gl.stencilMask(0x00);scene.overrideMaterial=outlineMaterial;renderer.render(场景,相机);scene.overrideMaterial=null;gl.stencilMask(0xff);.disable(gl.STENCIL_TEST);}卡通渲染Cel着色参考https://zh.wikipedia.org/zh-cn/%E5%8D%A1%E9%80%9A%E6%B8%B2%E6%9F%93的第一个解决方案:通过composer进行后期处理,但这实际上是对整个场景进行处理。如果您需要单一材料怎么办?而且还有锯齿问题,即使加了各种抗锯齿PASS,还是很明显。有点使用composer也比较简单,因为有官方的例子。第二种:复制一个对象然后稍微缩放,用模板测试得到放大的部分。缺点是缩放不能完美适配物体,越长越短越短。第三种这也是最合适的:先用framebuffer获取纹理,然后用shader处理纹理,在shader中比较上下左右2个像素,丢弃所有像素不在边缘,所以我们绘制了一个只有边缘几何体的框架!
