Beispiel #1
0
        /// <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));
            }
            }
        }
Beispiel #2
0
        /// <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);
            }
        }
Beispiel #3
0
 /// <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)));
 }
Beispiel #4
0
 /// <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));
 }