コード例 #1
0
        public static void DrawLines(Line <Vector3>[] lines, ref Matrix4 mvp, ref Color4 color, float width = 1.0f)
        {
            GL.LineWidth(width);

            lineShader.UseShader();
            lineShader.SetParameter(lineShader.loc_color, ref color);
            foreach (var l in lines)
            {
                var v   = l.to - l.from;
                var len = v.Length;
                if (len == 0.0f)
                {
                    continue;
                }
                var angle = Vector3.CalculateAngle(Vector3.UnitZ, l.to - l.from);
                var axis  = Vector3.Cross(Vector3.UnitZ, v).Normalized();
                var rot   = Matrix4.CreateFromAxisAngle(axis, angle);
                var scale = Matrix4.CreateScale(len);
                var trans = Matrix4.CreateTranslation(l.from);
                var m     = scale * rot * trans * mvp;
                lineShader.SetParameter(lineShader.loc_mvp, ref m, false);
                DrawSubMesh(lineMesh.subMeshes[0]);
            }
            lineShader.UnuseShader();
        }