Ejemplo n.º 1
0
 /// <param name="camera">It orients the origin</param>
 private static void EstablishTestScene(out Pipeline pipeline, out CharRenderBuffer <float> charBuffer, out ICamera camera)
 {
     pipeline   = new Pipeline();
     charBuffer = new CharRenderBuffer <float>(pipeline.RenderTarget);
     camera     = new Camera_Orthographic(width: 3.5f, height: 3.5f, near: -2.5f, far: 2.5f,
                                          new Transform(
                                              pos: Vector3.Zero,
                                              rotation: new Vector3(0, JMath.PI_HALF * .35f, -JMath.PI_HALF * 1.5f)));
 }
Ejemplo n.º 2
0
        public static void TestCamera_WorldToView_Orthographic()
        {
            ICamera camera = new Camera_Orthographic(width: 6, height: 4, near: -2, far: 4,
                                                     new Transform(
                                                         pos: Vector3.One,
                                                         rotation: new Vector3(0, JMath.PI_HALF, -JMath.PI_HALF * .5f)));
            Vector4 view0 = *camera.WorldToView * Vector4.UnitXNegative_Point;

            Assert.AreEqual(view0.X, 0, 1e-5f);
            Assert.AreEqual(view0.Y * view0.Y, .5f, 1e-5f);
            Assert.AreEqual(view0.Z * view0.Z, .125f, 1e-5f);
        }
Ejemplo n.º 3
0
        public static void TestDrawLine()
        {
            PipelineBase <AppdataBasic, V2FBasic> pipeline = new PipelineBase <AppdataBasic, V2FBasic>();
            CharRenderBuffer <float> charBuffer            = new CharRenderBuffer <float>(pipeline.RenderTarget);

            RenderEntity entity = new RenderEntity(new Transform(Vector3.Zero),
                                                   new Model(
                                                       vertices: new Vector3[] { new Vector3(-.5f, .5f, -.5f), new Vector3(-.5f, -.5f, -.5f), new Vector3(.5f, -.5f, -.5f), new Vector3(.5f, .5f, -.5f),
                                                                                 new Vector3(-.5f, .5f, .5f), new Vector3(-.5f, -.5f, .5f), new Vector3(.5f, -.5f, .5f), new Vector3(.5f, .5f, .5f) },
                                                       primitives: new IPrimitive[] { new LinePrimitive(0, 1), new LinePrimitive(1, 2), new LinePrimitive(2, 3), new LinePrimitive(3, 0),
                                                                                      new LinePrimitive(4, 5), new LinePrimitive(5, 6), new LinePrimitive(6, 7), new LinePrimitive(7, 4),
                                                                                      new LinePrimitive(0, 4), new LinePrimitive(1, 5), new LinePrimitive(2, 6), new LinePrimitive(3, 7) },
                                                       uvs: null,
                                                       normals: null
                                                       ), null);
            ICamera camera = new Camera_Orthographic(width: 3.5f, height: 3.5f, near: -2.5f, far: 2.5f,
                                                     new Transform(
                                                         pos: Vector3.Zero,
                                                         rotation: new Vector3(0, JMath.PI_HALF * .35f, -JMath.PI_HALF * 1.5f)));

            RenderEntity[] entitiesApply = new RenderEntity[] { entity };

            float framerate     = 25f;
            float time          = 10f;
            int   totalFrame    = (int)(framerate * time);
            float angleStep     = JMath.PI_TWO / totalFrame;
            int   frameInterval = (int)(1000f / framerate);

            for (int i = 0; i < totalFrame; i++)
            {
                pipeline.Draw(entitiesApply, camera);
                CRenderer.Render(charBuffer);
                entity.Transform.Rotation.X += angleStep;
                entity.Transform.Rotation.Z += angleStep;
                Thread.Sleep(frameInterval);
            }
        }