public Scene(JackApp app) { App = app; Root = new Node("Scene Root"); Camera = new Camera(JackApp.WindowWidth, JackApp.WindowHeight); // the root must have a children list Root.Children = new List <Node>(); }
public SpriteBatch(JackApp jack, int batchSize = 1000) { _batchSize = batchSize; _quadShader = Shader.FromStrings(_quadVertShaderSource, _quadFragmentShaderSource); // the amount of quads times the size of a vertex times 4 vertices per quad _indices = GenerateIndices(batchSize); // make a dynamic vbo and set it's data to null _quadVbo = new BufferObject <float>(_vertices, BufferTarget.ArrayBuffer, BufferUsageHint.DynamicDraw); GL.BufferData(BufferTarget.ArrayBuffer, VerticesAmount * sizeof(float), IntPtr.Zero, BufferUsageHint.DynamicDraw); _quadIbo = new BufferObject <int>(_indices, BufferTarget.ElementArrayBuffer); // add descriptions for the vertices inside the vao _quadVao = new VertexArrayObject <float, int>(_quadVbo, _quadIbo); _quadVao.VertexAttribPointer(0, POSITION_SIZE, VertexAttribPointerType.Float, VertexSize, 0); _quadVao.VertexAttribPointer(1, COLOR_SIZE, VertexAttribPointerType.Float, VertexSize, POSITION_SIZE); _quadVao.VertexAttribPointer(2, TEX_COORDS_SIZE, VertexAttribPointerType.Float, VertexSize, POSITION_SIZE + COLOR_SIZE); _quadVao.VertexAttribPointer(3, TEX_INDEX_SIZE, VertexAttribPointerType.Float, VertexSize, POSITION_SIZE + COLOR_SIZE + TEX_COORDS_SIZE); JackApp.OnExit += Dispose; }