本文主要是介绍Unity GL画线的坑,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unity中使用GL画线时注意一个问题,材质设置pass的代码应该放在GL.Color后面。类似下面这样:
void RenderLine(DTGizmos gizmos)
{if (!gizmos) return;foreach (GizmosLine gizmosLine in gizmos.gizmosLines){if (gizmosLine.verts.Length < 2) continue;//GL.Begin(GL.LINES);//GL.Color(gizmosLine.color);//foreach (Vector3 v in gizmosLine.verts){GL.Vertex(v);}//materialLine.SetPass(0);//GL.End();}
}
如果是绘制基于屏幕的线条,而不是三维空间的线条,请老老实实把Vector3的z值设置为0,否则有可能画不出来。
GL.PushMatrix();
GL.LoadOrtho();for (int i = 0; i < beziers.Length; i++)
{float alpha = alphaTarget * beziers[i].alphaMulti;if (Mathf.Approximately(alpha, 0) || alpha < 0) continue;//color.a = alpha;mat.SetColor("_Color", color);mat.SetPass(0);Vector3[] points = beziers[i].GetPoints();GL.Begin(GL.LINE_STRIP);foreach (Vector3 p in points){GL.Vertex(new Vector3(p.x, p.y, 0));//注意要把p.z归零再用}GL.End();
}GL.PopMatrix();
这篇关于Unity GL画线的坑的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!