Example #1
0
        public override void SetDynamicVbData(int vb, IntPtr vertices, int count)
        {
            int    size   = count * batchStride;
            IntPtr buffer = vBuffers[vb];

            DataBuffser.SetData(buffer, vertices, size, LockFlags.Discard);
            Device.SetStreamSource(device, 0, buffer, 0, batchStride);
        }
        public override int CreateIb(IntPtr indices, int indicesCount)
        {
            int    size   = indicesCount * sizeof(ushort);
            IntPtr buffer = Device.CreateIndexBuffer(device, size, Usage.WriteOnly,
                                                     Format.Index16, Pool.Default);

            DataBuffser.SetData(buffer, indices, size, LockFlags.None);
            return(GetOrExpand(ref iBuffers, buffer, iBufferSize));
        }
        public override int CreateVb(IntPtr vertices, VertexFormat format, int count)
        {
            int    size   = count * strideSizes[(int)format];
            IntPtr buffer = Device.CreateVertexBuffer(device, size, Usage.WriteOnly,
                                                      formatMapping[(int)format], Pool.Default);

            DataBuffser.SetData(buffer, vertices, size, LockFlags.None);
            return(GetOrExpand(ref vBuffers, buffer, vBufferSize));
        }
Example #4
0
        public override int CreateVb(IntPtr vertices, VertexFormat format, int count)
        {
            int    size   = count * strideSizes[(int)format];
            IntPtr buffer = IntPtr.Zero;

            for (;;)
            {
                int res = Device.CreateVertexBuffer(device, size, Usage.WriteOnly,
                                                    formatMapping[(int)format], Pool.Default, &buffer);
                if (res >= 0)
                {
                    break;
                }

                if (res != (int)Direct3DError.OutOfVideoMemory)
                {
                    throw new SharpDXException(res);
                }
                Events.RaiseLowVRAMDetected();
            }

            DataBuffser.SetData(buffer, vertices, size, LockFlags.None);
            return(GetOrExpand(ref vBuffers, buffer, vBufferSize));
        }