其实初衷只是觉得画虚线的话一段一段的画太不优雅,看看能不能用虚线贴图解决问题,看了下GL下的uv使用,看来是可行的,呵呵。
这里贴图坐标使用Vector3,常规形况下x,y对应u,v,以下两种情况需要访问z。
1、访问立方体贴图(这是使用矢量坐标访问的,因此为 x、y 和 z)。
2、进行“投影纹理”,在这种情况下,X 和 Y 坐标除以 Z 可获得最终坐标。这最适用于水反射等类似情形。
参考代码:
using UnityEngine;
using UnityEngine.Rendering;
public class GLTexCoord : MonoBehaviour
{
[SerializeField]
Material mat;
void OnEnable()
{
RenderPipelineManager.endCameraRendering += EndCameraRendering;
}
void OnDisable()
{
RenderPipelineManager.endCameraRendering -= EndCameraRendering;
}
void EndCameraRendering(ScriptableRenderContext context, Camera camera)
{
float len = 10;
Vector3 p1, p2;
p1 = new Vector3(len * Mathf.Cos(Time.time), len * Mathf.Sin(Time.time), 0);
p2 = -p1;
mat.SetPass(0);
GL.MultMatrix(transform.localToWorldMatrix);
GL.Begin(GL.LINES);
GL.TexCoord(new Vector3(0, 0, 0));
GL.Vertex(p1);
GL.TexCoord(new Vector3(0, 1, 0));
GL.Vertex(p2);
GL.End();
}
}