Ejemplo n.º 1
0
        public void SetUp()
        {
            var fakeVertex = new FakeVertex();

            _quad             = new Quad <FakeVertex>(fakeVertex, fakeVertex, fakeVertex, fakeVertex);
            _expectedVertices = new[]
            {
                _quad.FirstVertex, _quad.SecondVertex, _quad.ThirdVertex, _quad.FourthVertex,
                _quad.FirstVertex, _quad.SecondVertex, _quad.ThirdVertex, _quad.FourthVertex
            };
            _expectedIndices = new uint[]
            {
                0, 2, 3, 0, 1, 2,
                4, 6, 7, 4, 5, 6
            };
            _fakeVao        = new Vao <FakeVertex>();
            _fakeVbo        = new Vbo <FakeVertex>(3);
            _fakeEbo        = new Ebo();
            _vaoFactoryMock = new Mock <Factory <Vao <FakeVertex>, VaoArgs <FakeVertex> > >();
            _vaoFactoryMock.Setup(m => m.Create(It.IsAny <VaoArgs <FakeVertex> >())).Returns(_fakeVao);
            _vboFactoryMock = new Mock <Factory <Vbo <FakeVertex>, VboArgs <FakeVertex> > >();
            _vboFactoryMock.Setup(m => m.Create(It.IsAny <VboArgs <FakeVertex> >())).Returns(_fakeVbo);
            _eboFactoryMock = new Mock <Factory <Ebo, EboArgs> >();
            _eboFactoryMock.Setup(m => m.Create(It.IsAny <EboArgs>())).Returns(_fakeEbo);
            _vboRendererMock = new Mock <VboRenderer <FakeVertex> >();
            _quadRenderer    = new QuadRenderer <FakeVertex>(new[] { _quad, _quad }, _vaoFactoryMock.Object, _vboFactoryMock.Object, _eboFactoryMock.Object, _vboRendererMock.Object);
        }
Ejemplo n.º 2
0
        public QuadRenderer(Quad <T>[] quads, Factory <Vao <T>, VaoArgs <T> > vaoFactory, Factory <Vbo <T>, VboArgs <T> > vboFactory,
                            Factory <Ebo, EboArgs> eboFactory, VboRenderer <T> vboRenderer)
        {
            _vboRenderer = vboRenderer;
            var vertices = new T[quads.Length * 4];
            var indices  = new uint[quads.Length * 6];

            for (uint i = 0; i < quads.Length; i++)
            {
                vertices[i * 4]     = quads[i].FirstVertex;
                vertices[i * 4 + 1] = quads[i].SecondVertex;
                vertices[i * 4 + 2] = quads[i].ThirdVertex;
                vertices[i * 4 + 3] = quads[i].FourthVertex;

                indices[i * 6]     = i * 4;
                indices[i * 6 + 1] = i * 4 + 2;
                indices[i * 6 + 2] = i * 4 + 3;
                indices[i * 6 + 3] = i * 4;
                indices[i * 6 + 4] = i * 4 + 1;
                indices[i * 6 + 5] = i * 4 + 2;
            }

            _vbo = vboFactory.Create(new VboArgs <T>(vertices));

            _vao = vaoFactory.Create(new VaoArgs <T>(_vbo.VboId));

            _ebo = eboFactory.Create(new EboArgs(indices));
        }
 public unsafe override void Dispose()
 {
     Vbo.Dispose();
     Ebo.Dispose();
     Vao.Dispose();
     shader.Dispose();
     foreach (var item in textures)
     {
         item.Dispose();
     }
 }