Unity基于URP管线使用GL画线时UV的使用参考

        其实初衷只是觉得画虚线的话一段一段的画太不优雅,看看能不能用虚线贴图解决问题,看了下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();
	}
}

猜你喜欢

转载自blog.csdn.net/ttod/article/details/132053966