🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: cn.bbs.comp.program
Article #846

ʹ��DircetX�Ż���������

#846
From: ���ܵ�Сʨ
Date: Thu, 07 May 1998 00:00
157 lines
15744 bytes
   Ϊ��Windows 95��Windows NT�п�����Ϸ�ͽ���DircetX DirectS
ound �Լ�Direct3Do und��Ƶý��ij���,΢���ṩ��һϵ��ǿ���
���ߡ�DirectX�����������������Ӳ��,�Ծ����ܵ�����������ٶ�
,����CPU��ռ��ʱ�䡣����,��Ƶ�ź���Ȼ�����ϵͳ�����о�����
��Ӱ�졣 �����������ļ����������û�ʹ��DirectSound �Լ�Direc
t3DSound�Լ�����Ƶ�طŶ�ϵͳ���е�Ӱ�졣

    ����͸���
    ����,������̸̸�йض��塣�������Ϥ��DirectSound��������
һЩ����:
    ��������:
    ��DirectSound�����������һ��˵��,Ӧ�ó��򲢷ǽ�������
��ֱ��д�����������෴,DirectSound�����ڴӻ������н�������
�ݼ��Ժϳ�,Ȼ���������������С�ע��:�����������һ��,������
��ʽ�������������ʽ��
    �ӻ�����:
    ��ָ����ִ�в�����ݵ�Ӧ�ó��򻺳���ÿ��ִ�еIJ����ļ�
����һ���ӻ�����,ÿ������Ļ��������Լ��ض��ĸ�ʽ��
    ��̬������:
    �����ڴ��е������������ֻ��һ�μ򵥲���,�û��Ϳ�����
��������д��һ�����������,��������������ʮ�ַ��㡣��̬����
��ͨ����ĺϳɼ���ִ�С�
    ��������:
    ����Ϊ������һ����,������,���Dz���Ҫ�������ڴ�������н�
���������ļ�����������������ʱ,�û����������Ե�������������
��д����ݡ�����,������������Ӳ���н��������ϳɡ�
    DirectSound�ϳ���Ԫ������ӻ������н������а�λ���кϳ�,
Ȼ��ִ������������С��������(�������ƽ��)��Ƶ��ת���Լ���
ά���ݵȲ�������ϳ������ǿ���ͨ��API���ʵ���ɢ���(��ͬ����
����������һ���Ʋ���),������ DirectSound�����뵽CPU���ĵIJ�
�֡������Ǻϳ����������ӻ�����֮��Ĺ�ϵʾ��ͼ��ͼ1
    ��ͼ��,û�а��κ���ϳ�����ص���ά����Լ��������͵�
��̡�ʵ���Ϻϳ���Զ����ͼ��չʾ�����㡣
    �������ǽ���һЩDirectSound��ʹ�ü��ɡ�

    ����ʹ������
    DirectSound�����������֮һ���Ƕ������ࡢ���ƶ������Ƶ
�źŵ�������һ����������������������������,��ô,����ԳƵ�
����һ������Ψһ�Ļ���ֻ��CPUָ�����ڡ���ÿ����ʹ�õĴӻ�
�������CPUָ������,ÿһ������Ƶ�������ȵĽ�̲���������
��CPUָ�����ڵĶ�����ġ���ά�������ȳ���������ĸ���CPUָ
�����ڡ�
    ��Ӧ��ͬ������������������,һ��̽��һ��ȫ��λ��������
�����������ǿ����(������Լ�������dz���Ա�����������,��
ô����Լ�һ���˾���������ϸ����һ��),˼��һ�¾�������������
�ڽ�������Ծõľ���ݸ��û��Ĺ����������Ϊ��Ҫ�����á���
�Բ�������Ԥ�켼�����ٴӻ������ʹ�á�����:���Ϊ�˺��г���
ҹ�ķ�Χ,��һ�������ģ����ĵ���,������һ������м�¼����
�ܵĻ���,��ô���Խ����Ǻϳɵ�һ������С�
    ���������Ժ�����Ӧ�ó���ij�������,����Ҫ���Ժ�����
�����Դ���,��ô��Ӧ�öԸ÷�������һ���̶ȵļ򻯡���Ҫ��ס,��
Ҫ��Ƴ��൱������ʵ����������,��Ҫ��ʱ��������á�Beatles��
Sgt.Pepper's LonelyHearts Club Band ����һ���д����ΰ�����
,���¼��һ���������ʽ¼�����С�����γɶ��յ���,�ִ����
Ƶ��¼�豸�ṩ��������ʮ�˸����,�����ṩ����Ŀ���������ʵ
�úϳɵ����޶�����ĺ�ʽ¼����,�Լ�MIDI���з�������

    �����ӻ�������ʹ����ͬ����ݸ�ʽ
    DirectSound�ϳ�����ÿ���ӻ������е����ת��Ϊ����������
�ݸ�ʽ,������ݵ�ת��������ݽ�����������ĺϳɹ����ʵ�ֵ�,
��Ҳ��ռ��CPU���ڡ��ڱ�֤�ӻ�����(���粨���ļ�)�����������
����ͬ����ݸ�ʽ��ǰ����,��ʿ����ǿ������ġ���ʵ��,������
��DirecSound�����ָ�ʽת����ʽ,��Ҫ���Ľ����ǶԱ��������ʺ�
�����,��ʹ��������8 λ��16λ)����һЩ���Ҳû�й�ϵ,��Ϊ��
Ψһ�ĺ��ֻ�ǽ��������������ݴ�ȡ���ʡ�
    ��������������������
    ��ĿǰΪֹ,���������ISA���߿�, ��ͨ��DMA��ʽ������
��ݴ�ϵͳ�д浽���ػ�������,�������ڽ����ڴ��д֮ǰ������
�ȴ�DMA��ݴ������,���Ʊػ�Ӱ�쵽CPU�������ٶȡ�
    ����ISA������,������ݴ��ͷ�ʽ���ɽ���ϵͳ�����в���
�ɻرܵ�Ӱ��,�������͵�32λPCI����������κ�Ӱ�졣
    ����DirectSound,DMA��ݴ����Ӱ��ֱ�ӹ�ϵ����ݵ������
���Լ���������ķ������ʡ���˵�й������Ȥ��:��һ̨��ƵΪ90M
hz�ı��ڻ������л��ʽΪ44.1Khz��16λ�����������ֳ���,DMA
ռ�ö��30%��CPUָ������!DMA��ݴ�������Ӱ��DirectSound����
��������ء�ֵ�����ҵ���,��������Ҳ�����״��?ʵ�����,����
��ݴ�ȡ���ʵ���ð취�Ǹı����������е���ݸ�ʽ������Ľ���
ʮ������:���ܺ�����Ʒ�ʽ��ס�Ҫ�ı����������е���ݸ�ʽ,ֻ��
���÷���IDirectSoundBuffer::Setformat,����Ҫ���:Э����Ҫ��
�ó�DSSCL_PRIORITY��DSSCL_EXCLUSIVE,�Ա�����������ĺķѡ�
    ������ʱ����������ʹ����������
    DMAͬʱ����һ������Ӱ��ϵͳ�����С���û����������ʱ,Dire
ctSoundֹͣ�˺ϳ����Ĺ�����DMA�Ļ���������д����Ŷ̴�Ƶ
��������ʱ����,��ÿ����������ʱʹ�ϳ�����������ʱ�ļ�϶�
����ͣͣ,����úϳ���һֱ��������Ĺ���״̬���㡣���������
��,����������������ǿ���Եص��÷���PLAYʹ�ϳ������ڼ���״̬
������,��ʹ��û����������ʱ,�ϳ���Ҳ������������ʱ,Ϊ�˻�
��ֹͣ�ϳ�����ȱʡ��ʽ,���ǿ��������������е��÷���STOP��

    ʹ��Ӳ�����������ϳ�
    ���ϵͳ��װ����֧�����DirectSound����,�������
֧��һ��ˮƽ��Ӳ���ϳɡ������һ��С���Ž������û�����ʹ��Ӳ
���ϳɡ�
    �ڽ���Ӳ�������ϳ�ʱʹ�þ�̬������DirectSound�ھ�̬��
���н��������ϳɡ�
    Ϊ�õ����������ļ���������������(��������������Ӳ����
�ɵĺϳ�������һ���޶ȵ�)��
    �������ļ�����ʱ,ʹ�÷���IDirectSound::GetCaps����������
��Ӳ��֧�ֺ��ָ�ʽ�������ܵز�����Щ��ʽ(һЩ��ֻ�ܺϳ���
����ʽ�������ļ�,����:SoundBlaster AW32��ֻ�ܺϳɵ�16λ��
ʽ�������ļ�)��
    ��Ҫ������̬������ʱ,�����CreatSoundBuffer�����ӻ�����,
�ڽṹDSBUFFERDESC��dwFlags�����趨DSBCAPS_STATIC��־��Ҳ��
��ͨ���趨  DSBCAPS_LOCHARDWARE��־�����������ݽ���ǿ����
Ӳ���ϳɡ�����,Ӳ���ϳ���Ҫʹ�õ���Դ������ʱ,CreatSoundBuff
r �ͻ���?
    ����IDirectSound::GetCapsΪ�����ṩ�˹�����������������
�꾡����,��������ǽ��д�ȡ�����кܴ�İ����������乤��ʱ
���ڿ��Ե���GetCaps,������Ƶϵͳ����ѷ�ʽʹ��Ӳ����Դ���� D
irectX �ĵ��в鿴�ṹ DSAPS�ͱ�־DSCAPS.dwFlags��ʹ����׼ȷ
�˽⵽һЩϵͳ��������Ϣ��

    ����޶ȵؽ����������Ʊ任
    �ڴӺϳ����иı��⡢������Ƶ��Ҳ��Ӱ�쵽Ӧ�ó��������
��Ϊ�˷�ֹ�������ʱ�ж�,DirectSound�ϳ���������ǰ20��100��
����������ʱ����������ϳɡ��������������Ʊ任ʱ,�ϳ�����
�ò�ˢ�����ڽ��е������ϳɵĻ��������Ϣ,���ºϳ�����Ӧ�仯
���ȽϺõķ����Ǿ�����������ϵͳ�Ŀ��Ƹı�������ڰ�����Ⱥ
����ʱ�Ե���Ϊ��Ҫ��ͬʱ,����Ӧ���������ճ��ĵ���SetVolume��
SetPn��SetFrequency�IJ��������������:������֡ͬ���Ķ��ڼ�
��,��Ҫ��֡ͬ����̴�������������ƶ��������������ʱ,��Ӧ��
ÿ֡����SetPanһ��,����ÿ֡���Ρ�
    ע��:��ά���Ʊ任(����λ�á��ٶȡ����������ӵ�)Ҳ����
��DirectSound�ϳ���������ǰ���кϳɵĻ����������ºϳɡ�����,
Ҳ���Խ�һϵ����ά���Ʊ任������һ����,�⽫ʹDirectSound�ϳ�
��ֻ����һ�����ºϳɡ�

    ʹ����ʱ��ά�������
    ����ǰ������,��ά�������ȳ����������Ѹ���CPUָ�����ڡ�
������Ϊ��ÿһ���ϳ�������,Ϊ�������ά��������Ч��ռ�ø�
���CPUָ�����ڡ�Ӧ�þ����ܵؼ���ʹ����ά������,��ò�Ҫʹ��
��Щ�����������õ���ά����������ͨ��ʵ��ó��ġ������Ӧ�ó�
��ʱ,Ӧ�þ�����г���,ʹ�������׵�ʵ�־��л�û����άЧ���
������Ҳ���Ե��þ��� DS3DMODE_DISABLE��־�ķ���IDirectSound:
:SetMode,ʹ����ά����ܹ�����ά�����������С�
    Ϊ��ʹ��ά���õĸı��ϵͳ���е�Ӱ�콵�͵���С�̶�,Ӧ��
ʹ����ʱ��ά����������DirectSound��ά������������е���
����Ϊ��ʹ����ά��ʱ�������,���趨ÿ����ά���ñ任(SetPosit
ion��SetVelocity��)�еķ��� IDirect3DListener��Direct3DSounB
 uffer��dwApply �����DS3DMODE_DISABLE��־,���ҽ����е���Щ
�仯�Ƴ�һ֡;���,�ٵ���IDirect3DListener::CommitDeferredSet
tingsȥִ�����е���ʱ����,����ǰ�ĺϳɻ������н������ºϳɡ�
1T4�� ��
    ����Ϊ����������һϵ������DirectX�Ż���Ƶý������⹤��
�����ߵĽ�����:���֧�����С����Ӻ��������ڵ���Ƶ��ϵͳ����
������,���뱣֤�г����ʱ��ȴ���������!����һ��ʼ�ͽ���
�����е�Э���Կ��ǽ�ȥ,������񽫱�ø������
--
 ________ _____          _____        ______________  _____ 
 ___  __ \___(_)________ ___(_)       __  ___/___  /_ ___(_)
 __  /_/ /__  / ___  __ \__  /        _____ \ __  __ \__  / 
 _  ____/ _  /  __  /_/ /_  /         ____/ / _  / / /_  /  
 /_/      /_/   _  .___/ /_/          /____/  /_/ /_/ /_/   
                /_/                                         

�� ��Դ:���ϴ�С�ٺ���Ϣ����վ bbs.nju.edu.cn��[FROM: hsia.nju.edu.cn]
Technical Details
Message-ID: <3OOYPE$u1C@bbs.nju.edu.cn>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: Chinese,GB
X-Google-Thread: fc86e,fec671a6d2fdbbb9,start
X-Google-Attributes: gidfc86e,public
From: pipishi.bbs@bbs.nju.edu.cn (���ܵ�Сʨ)
Subject: ʹ��DircetX�Ż���������
Date: 1998/05/07
Message-ID: <3OOYPE$u1C@bbs.nju.edu.cn>
X-Deja-AN: 351560167
X-Filename: Programming/M.894547646.A
Organization: nju_bbs
Newsgroups: cn.bbs.comp.program