Exemplo n.º 1
0
        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()
            });
        }
Exemplo n.º 2
0
 // TODO: Texture leak.
 var(tex, srv) = textureFactory.CreateSolidCubeTexture(key.Item1, key.Item2, key.Item3, key.Item4, key.Item5, key.Item6);