Example #1
0
        public DatumPlaneLeaf(OpenGL gl, IShaderProgram shader, IEnumerable<DatumPlane> planes)
        {
            _gl = gl;
            _shader = shader;
            var linedata = new List<Vert>();
            var quaddata = new List<Vert>();

            const float size = 20f;
            foreach (var plane in planes)
            {

                var v1 = (plane.Transform * Mat4.Translate(new Vect3(-size / 2.0, -size / 2.0, 0))).ToVect3();
                var v2 = (plane.Transform * Mat4.Translate(new Vect3(size / 2.0, -size / 2.0, 0))).ToVect3();
                var v3 = (plane.Transform * Mat4.Translate(new Vect3(size / 2.0, size / 2.0, 0))).ToVect3();
                var v4 = (plane.Transform * Mat4.Translate(new Vect3(-size / 2.0, size / 2.0, 0))).ToVect3();

                linedata.Add(new Vert(v1, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v2, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v2, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v3, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v3, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v4, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v4, Vect3.Zero, _edgecolour));
                linedata.Add(new Vert(v1, Vect3.Zero, _edgecolour));

                quaddata.AddRange(new[] { new Vert(v1, Vect3.Zero, _basecolour), new Vert(v2, Vect3.Zero, _basecolour), new Vert(v3, Vect3.Zero, _basecolour), new Vert(v4, Vect3.Zero, _basecolour) });
                quaddata.AddRange(new[] { new Vert(v4, Vect3.Zero, _basecolour), new Vert(v3, Vect3.Zero, _basecolour), new Vert(v2, Vect3.Zero, _basecolour), new Vert(v1, Vect3.Zero, _basecolour) });

            }
            _lineVAO = new VAO(gl, _shader, new VBO(gl, BeginMode.Lines, linedata));
            _quadVAO = new VAO(gl, _shader, new VBO(gl, BeginMode.Quads, quaddata));
        }
        public CoordinateSystemLeaf(OpenGL gl, IShaderProgram shader, IEnumerable<CoordinateSystem> coordinateSystems)
        {
            _shader = shader;
            var data = new List<Vert>();

            foreach (var csys in coordinateSystems)
            {
                var origin = csys.Transform.ToVect3();
                data.Add(new Vert(origin, Vect3.Zero, Color.Blue.ToVector4()));
                data.Add(new Vert((csys.Transform * Mat4.Translate(new Vect3(Size, 0, 0))).ToVect3(), Vect3.Zero, Color.Blue.ToVector4()));
                data.Add(new Vert(origin, Vect3.Zero, Color.Red.ToVector4()));
                data.Add(new Vert((csys.Transform * Mat4.Translate(new Vect3(0, Size, 0))).ToVect3(), Vect3.Zero, Color.Red.ToVector4()));
                data.Add(new Vert(origin, Vect3.Zero, Color.Green.ToVector4()));
                data.Add(new Vert((csys.Transform * Mat4.Translate(new Vect3(0, 0, Size))).ToVect3(), Vect3.Zero, Color.Green.ToVector4()));
            }
            _vao = new VAO(gl, _shader, new VBO(gl, BeginMode.Lines, data));
        }
Example #3
0
 public PointRenderer(OpenGL gl, IShaderProgram shader, IEnumerable<Vert> data)
 {
     _shader = shader;
     _vbo = new VBO(gl, BeginMode.Lines, data);
     _vao = new VAO(gl, _shader, _vbo);
 }