缺点:只能在平面上贴.
2.修改贴图:
将物体的材质贴图替换成原贴图和decal贴图的混合,适用于静态批量的物体
缺点:只适用于静态物体
3.基于SubMesh:
先获取跟目标投影相交的...将mesh的顶点数据变换到投影框的三维空间中,这样一来是方便裁剪,二来是裁剪完成后可以将变换后的坐标值直接作为uv值使用.
3.得到相交的三角形片:
判断每个点是否在投影框内,如果三角形有任意一个点在框内...,则认为三角形与投影框相交.当然这种方法会漏掉一些三角形,比如这中情况:当然如果mesh较小以及要求不精细的话也没有太大问题.
4.将所有相交的三角形片,合并成新的IndexBuffer,使用新的decal...的纹理重新渲染一次,UV可以直接取映射到框中的xy值,当然要注意在shader中把uv 0~1之外的部分clip掉
5.如果你想的话,也可以对处在边界,不完全在框内部的三角形进行裁剪,最后整理顶点生成新的...mesh.
4.基于Multi-Pass实现:
和上面方法很相似
1.获取所有相交的mesh;
2.在mesh正常渲染结束后,再渲染一次,使用decal的shader,向shader中传入一个