public void DrawArrays(OpenTK.Graphics.OpenGL.PrimitiveType pt, int st, int len) { int sf = sizeof(float); float[] ab = buffers[activeBuffer]; bool ev = enables.ContainsKey(ArrayCap.VertexArray); bool ec = enables.ContainsKey(ArrayCap.ColorArray); bool et = enables.ContainsKey(ArrayCap.TextureCoordArray); int vi = ev ? pointers[ArrayCap.VertexArray].offset / sf : 0; int ci = ec ? pointers[ArrayCap.ColorArray].offset / sf : 0; int ti = et ? pointers[ArrayCap.TextureCoordArray].offset / sf : 0; int vs = ev ? pointers[ArrayCap.VertexArray].stride / sf : 0; int cs = ec ? pointers[ArrayCap.ColorArray].stride / sf : 0; int ts = et ? pointers[ArrayCap.TextureCoordArray].stride / sf : 0; vi += vs * st; ci += cs * st; ti += ts * st; List <rend> data = new List <rend>(); for (int i = 0; i < len; i++) // index only for counting loop. { ver v = null; col c = null; tex t = null; if (ev) { v = new ver() { x = ab[vi], y = ab[vi + 1] }; vi += vs; } if (ec) { c = new col() { a = ab[ci], r = ab[ci + 1], g = ab[ci + 2], b = ab[ci + 3] }; ci += cs; } if (et) { t = new tex() { u = ab[ti], v = ab[ti + 1] }; ti += ts; } data.Add(new rend() { v = v, c = c, t = t }); } renderlist.Add(new pol() { pt = pt, data = data.ToArray() }); }
// TODO: Texture leak. var(tex, srv) = textureFactory.CreateSolidCubeTexture(key.Item1, key.Item2, key.Item3, key.Item4, key.Item5, key.Item6);