예제 #1
0
        private void Create(DirectSoundBase directSound, DSBufferDescription bufferDesc)
        {
            if ((bufferDesc.dwFlags & DSBufferCapsFlags.DSBCAPS_PRIMARYBUFFER) == DSBufferCapsFlags.DSBCAPS_PRIMARYBUFFER)
            {
                throw new ArgumentException("Don t set the PRIMARYBUFFER flag for creating a secondarybuffer.", "bufferDesc");
            }

            _basePtr = directSound.CreateSoundBuffer(bufferDesc, IntPtr.Zero).ToPointer();
        }
예제 #2
0
        public DirectSoundPrimaryBuffer(DirectSoundBase directSound)
        {
            if (directSound == null)
            {
                throw new ArgumentNullException("directSound");
            }

            DSBufferDescription primaryBufferDesc = new DSBufferDescription()
            {
                dwBufferBytes   = 0,
                dwFlags         = DSBufferCapsFlags.DSBCAPS_PRIMARYBUFFER | DSBufferCapsFlags.DSBCAPS_CTRLVOLUME | DSBufferCapsFlags.DSBCAPS_CTRL3D,
                dwReserved      = 0,
                lpwfxFormat     = IntPtr.Zero,
                guid3DAlgorithm = Guid.Empty
            };

            primaryBufferDesc.dwSize = Marshal.SizeOf(primaryBufferDesc);

            _basePtr = directSound.CreateSoundBuffer(primaryBufferDesc, IntPtr.Zero).ToPointer();
        }