/// <summary> /// Gets the actual value as defined in OpenAL for the given enum member. /// </summary> /// <param name="mode">The enum.</param> /// <returns>The value.</returns> /// <exception cref="InvalidEnumArgumentException">Thrown if the enum is not valid.</exception> private int GetValueForEnum(BufferStorageMode mode) { switch (mode) { case BufferStorageMode.Automatic: { return(_bufferStorageModeAutomatic); } case BufferStorageMode.Hardware: { return(_bufferStorageModeHardware); } case BufferStorageMode.Accessible: { return(_bufferStorageModeAccessible); } default: { throw new InvalidEnumArgumentException(nameof(mode), (int)mode, typeof(BufferStorageMode)); } } }
/// <summary> /// Sets the storage mode of an OpenAL buffer. /// </summary> /// <param name="buffer">The buffer handle.</param> /// <param name="mode">The storage mode that should be used for the buffer.</param> /// <returns> /// true if the buffer was successfully set to the requested storage mode; otherwise, false. /// </returns> /// <seealso cref="GetBufferMode(uint)" /> public bool SetBufferMode(uint buffer, BufferStorageMode mode) { var pool = ArrayPool <uint> .Shared; var buffers = pool.Rent(1); buffers[0] = buffer; try { return(SetBufferMode(1, buffers, mode)); } finally { pool.Return(buffers, true); } }
/// <summary> /// Sets the storage mode of an array of OpenAL buffers. /// </summary> /// <param name="count">The number of buffers pointed to by <paramref name="buffers" />.</param> /// <param name="buffers">An array of OpenAL buffer handles.</param> /// <param name="mode">The storage mode that should be used for all the given buffers.</param> /// <returns> /// true if all buffers were successfully set to the requested storage mode; otherwise, false. /// </returns> /// <seealso cref="GetBufferMode(uint)" /> public bool SetBufferMode(int count, ReadOnlySpan <uint> buffers, BufferStorageMode mode) { return(SetBufferMode(count, buffers, GetValueForEnum(mode))); }
/// <summary> /// Sets the storage mode of a set of OpenAL buffers. /// </summary> /// <param name="mode">The storage mode that should be used for all the given buffers.</param> /// <param name="buffers">An array of OpenAL buffer handles.</param> /// <returns> /// true if all buffers were successfully set to the requested storage mode; otherwise, false. /// </returns> /// <seealso cref="GetBufferMode(uint)" /> public bool SetBufferMode(BufferStorageMode mode, params uint[] buffers) { return(SetBufferMode(buffers.Length, buffers, mode)); }