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); }
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(); } }