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; }
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); }
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); }
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 ); }
//--------------------------------------------------------------------- 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; }
public bool ReleaseIfDefaultPool() { if ( d3dPool == D3D.Pool.Default ) { if ( d3dBuffer != null ) { d3dBuffer.Dispose(); d3dBuffer = null; } return true; } return false; }