サイクルを使って表と裏を別々に描くのですが、表と裏を一度ずつ描く方法があってもいいような気がします。一番の理由は、私がGLの部分を完全に理解していないからです、心配しないで、ゆっくりやってください。
コードリファレンス:
using UnityEngine;
using UnityEngine.Rendering;
public class GLWireFrame : MonoBehaviour
{
[SerializeField]
MeshFilter filter;
[SerializeField]
Material matFront;
[SerializeField]
Material matBack;
Vector3[] verts;
int[] tris;
private void Start()
{
verts = filter.mesh.vertices;
tris = filter.mesh.triangles;
}
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;
GL.MultMatrix(transform.localToWorldMatrix);
GL.wireframe = true;
GL.Begin(GL.TRIANGLES);
matBack.SetPass(0);
for (int i = 0; i < tris.Length; i += 3)
{
GL.Vertex(verts[tris[i]]);
GL.Vertex(verts[tris[i + 2]]);
GL.Vertex(verts[tris[i + 1]]);
}
GL.End();
matFront.SetPass(0);
GL.Begin(GL.TRIANGLES);
for (int i = 0; i < tris.Length; i+=3)
{
GL.Vertex(verts[tris[i]]);
GL.Vertex(verts[tris[i +1]]);
GL.Vertex(verts[tris[i +2]]);
}
GL.End();
GL.wireframe = false;
}
}