Esempio n. 1
0
        public bool Write(short[] src)
        {
            this.Indices.AddRange(src);

            if (this.Indices.Count > this.bufferSize)
            {
                this.bufferSize = (this.bufferSize == 0? initialBufferSize : this.bufferSize * 2);
                this.bufferSize = Math.Max(this.bufferSize, this.Indices.Count);

                RawBuffer = new D3D.IndexBuffer(device.RawDevice, sizeof(short) * this.bufferSize, D3D.Usage.None, D3D.Pool.Default, true);
            }

            DataStream stream = this.RawBuffer.Lock(0, 0, D3D.LockFlags.None);
            try
            {
                stream.WriteRange(this.Indices.ToArray());
            }
            catch
            {
                return false;
            }
            finally
            {
                this.RawBuffer.Unlock();
            }
            return true;
        }
Esempio n. 2
0
        private void CreateIndexBuffer()
        {
            int indexSize = 2;

            if (IndexType == IndexBufferType.Int32)
            {
                indexSize = 4;
            }

            mBuffer = new SlimDX.Direct3D9.IndexBuffer(
                mDisplay.D3D_Device.Device,
                mCount * indexSize,
                SlimDX.Direct3D9.Usage.WriteOnly,
                SlimDX.Direct3D9.Pool.Managed,
                IndexType == IndexBufferType.Int16);
        }
Esempio n. 3
0
		public D3DHardwareIndexBuffer( HardwareBufferManagerBase manager, IndexType type, int numIndices, BufferUsage usage, D3D.Device device, bool useSystemMemory, bool useShadowBuffer )
			: base( manager, type, numIndices, usage, useSystemMemory, useShadowBuffer )
		{
#if !NO_AXIOM_D3D_MANAGE_BUFFERS
			d3dPool = useSystemMemory ? D3D.Pool.SystemMemory :
				// If not system mem, use managed pool UNLESS buffer is discardable
				// if discardable, keeping the software backing is expensive
					  ( ( usage & BufferUsage.Discardable ) != 0 ) ? D3D.Pool.Default : D3D.Pool.Managed;
#else
			d3dPool = useSystemMemory ? Pool.SystemMemory : Pool.Default;
#endif

		    device = D3DRenderSystem.ActiveD3D9Device; // temp hack (update to 1.7)

			// create the buffer
			d3dBuffer = new D3D.IndexBuffer(
				device,
				sizeInBytes,
				D3DHelper.ConvertEnum( usage ),
				d3dPool,
				type == IndexType.Size16 );
		}
 private void CreateNativeIndexBuffer()
 {
     nativeIndexBuffer = new IndexBufferD3D9(nativeDevice, maxNumberOfIndices * indexSize,
                                             Usage.Dynamic, Pool.Default, true);
 }
Esempio n. 5
0
		protected override void dispose( bool disposeManagedResources )
		{
			if ( !IsDisposed )
			{
				if ( disposeManagedResources )
				{
					if ( d3dBuffer != null && !d3dBuffer.Disposed )
					{
						d3dBuffer.Dispose();
						d3dBuffer = null;
					}
				}
			}

			// If it is available, make the call to the
			// base class's Dispose(Boolean) method
			base.dispose( disposeManagedResources );
		}
Esempio n. 6
0
		//---------------------------------------------------------------------
		public bool RecreateIfDefaultPool( D3D.Device device )
		{
			if ( d3dPool == D3D.Pool.Default )
			{
				// Create the Index buffer
				d3dBuffer = new D3D.IndexBuffer(
					device,
					sizeInBytes,
					D3DHelper.ConvertEnum( usage ),
					d3dPool,
					type == IndexType.Size16 );

				return true;
			}
			return false;
		}
Esempio n. 7
0
		public bool ReleaseIfDefaultPool()
		{
			if ( d3dPool == D3D.Pool.Default )
			{
				if ( d3dBuffer != null )
				{
					d3dBuffer.Dispose();
					d3dBuffer = null;
				}
				return true;
			}
			return false;
		}