(x3daudio.h) X3DAUDIO_EMITTER 结构

定义与任意数量的声音通道一起使用的单点或多点 3D 音频源。

语法

typedef struct X3DAUDIO_EMITTER {
  X3DAUDIO_CONE           *pCone;
  X3DAUDIO_VECTOR         OrientFront;
  X3DAUDIO_VECTOR         OrientTop;
  X3DAUDIO_VECTOR         Position;
  X3DAUDIO_VECTOR         Velocity;
  FLOAT32                 InnerRadius;
  FLOAT32                 InnerRadiusAngle;
  UINT32                  ChannelCount;
  FLOAT32                 ChannelRadius;
  FLOAT32                 *pChannelAzimuths;
  X3DAUDIO_DISTANCE_CURVE *pVolumeCurve;
  X3DAUDIO_DISTANCE_CURVE *pLFECurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFDirectCurve;
  X3DAUDIO_DISTANCE_CURVE *pLPFReverbCurve;
  X3DAUDIO_DISTANCE_CURVE *pReverbCurve;
  FLOAT32                 CurveDistanceScaler;
  FLOAT32                 DopplerScaler;
} X3DAUDIO_EMITTER, *LPX3DAUDIO_EMITTER;

成员

pCone

指向音锥的指针。 LPF 仅与矩阵的单通道发射器一起使用, (直接路径和混响路径) 以及混响计算。 NULL 指定发射器是全向的。

OrientFront

前方方向的方向。 此值必须与 OrientTop 正交。 使用 OrientFront 时必须规范化。 对于不带 cones 的单通道发射器 ,OrientFront 仅用于发射器角度计算。 对于多通道发射器或具有 Cones OrientFront 的单通道用于矩阵,LPF (直接和混响路径) 和混响计算。

OrientTop

顶部方向的方向。 此值必须与 OrientFront 正交。 OrientTop 仅用于矩阵计算的多通道发射器。

Position

在用户定义的世界单位中的位置。 此值不会影响 速度

Velocity

速度向量(以用户定义的世界单位/秒为单位)。 此值仅用于多普勒计算。 它不会影响 位置

InnerRadius

要用于内部半径计算的值。 如果 InnerRadius 为 0,则不使用内部半径,但仍可使用 InnerRadiusAngle 。 此值必须介于 0.0f 和 MAX_FLT 之间。

InnerRadiusAngle

要用于内部半径角度计算的值。 此值必须介于 0.0f 和 X3DAUDIO_PI/4.0 之间。

ChannelCount

由X3DAUDIO_EMITTER结构定义的发射器数。 必须大于 0。

ChannelRadius

如果 ChannelCount 大于 1,则与放置通道的位置的距离。 ChannelRadius 仅用于矩阵计算的多通道发射器。 必须大于或等于 0.0f。

pChannelAzimuths

通道位置表,表示为沿通道半径相对于与顶部方向矢量正交的平面中的前方向矢量的方位角。 X3DAUDIO_2PI方位线指定通道是 LFE) 通道 (低频效果。 LFE 通道定位在发射器基上,仅针对 pLFECurve 进行计算,从不针对 pVolumeCurve 进行计算。 pChannelAzimuths 必须至少具有 ChannelCount 元素,但如果 ChannelCount = 1,则可以为 NULL。 表值必须在 0.0f 范围内才能X3DAUDIO_2PI。 pChannelAzimuths 与多通道发射器一起使用,用于矩阵计算。

pVolumeCurve

量级距离曲线,仅用于矩阵计算。 NULL 指定符合反平方法则的专用默认曲线,以便当距离介于 0.0f 和 CurveDistanceScaler × 1.0f 之间时,不应用任何衰减。 当 distance 大于 CurveDistanceScaler × 1.0f 时,放大因子 (CurveDistanceScaler × 1.0f) /distance。 在 CurveDistanceScaler × 2.0f 的距离处,声音将为半音量或 -6 dB,在 CurveDistanceScaler × 4.0f 的距离处,声音将为四分之一音量或 -12 dB,依序而论。

pVolumeCurve 和 pLFECurve 彼此独立。 pVolumeCurve 不会影响 LFE 通道 音量。

pLFECurve

LFE 滚动距离曲线,或 NULL 以使用默认曲线:[0.0f, CurveDistanceScaler ×1.0f], [CurveDistanceScaler ×1.0f, 0.0f]。 pLFECurve 的 NULL 值指定一个默认曲线,该曲线符合具有 distance = <CurveDistanceScaler 固定为无衰减的反平方法则。 pVolumeCurvepLFECurve 彼此独立。 pLFECurve 不会影响非 LFE 通道音量。

pLPFDirectCurve

低通筛选器 (LPF) 直接路径系数距离曲线,或 NULL 以使用默认曲线:[0.0f, 1.0f]、[1.0f, 0.75f]。 pLPFDirectCurve 仅用于 LPF 直接路径计算。

pLPFReverbCurve

LPF 混响路径系数距离曲线,或 NULL 以使用默认曲线:[0.0f, 0.75f]、[1.0f, 0.75f]。 pLPFReverbCurve 仅用于 LPF 混响路径计算。

pReverbCurve

混响发送级别距离曲线,或 NULL 以使用默认曲线:[0.0f, 1.0f], [1.0f, 0.0f]。

CurveDistanceScaler

曲线距离缩放器,用于将规范化距离曲线缩放为用户定义的世界单位和/或放大其效果。 这不会影响任何其他计算。 该值必须位于要FLT_MAX FLT_MIN的范围内。 CurveDistanceScaler 仅用于矩阵、LPF (直接路径和混响路径) 以及混响计算。

DopplerScaler

用于夸大多普勒移位效果的多普勒移位缩放器。 DopplerScaler 仅用于 Doppler 计算,不会影响任何其他计算。 该值必须在 0.0f 范围内才能FLT_MAX。

注解

X3DAUDIO_EMITTER 仅支持单点发射器中的圆锥体。 多点发射器是管理一组相关声源的便捷高效方法。 许多属性在所有通道点之间共享,例如 Doppler , 相同的多普勒移位应用于发射器中的所有通道。 因此,只需计算一次多普勒值,而不需要像使用多个单独的单点发射器那样按点计算。 由于 X3DAUDIO_EMITTER 只有一个方向向量,因此多点发射器圆锥的用途有限,迫使所有通道的行为就像它们面向相同的方向一样。 如果需要多个独立锥体,则应使用多个单点发射器,每个发射器都有自己的方向。

参数类型X3DAUDIO_VECTOR类型为 DirectX::XMFLOAT3,以提供 x、y 和 z 浮点值。

X3DAudio 使用左手笛卡尔坐标系,x 轴上的值从左到右递增,y 轴上的值从下到上,z 轴的值从近到远。 方位角是从给定参考方向顺时针测量的。

若要将 X3DAudio 与右手坐标一起使用,必须否定 OrientFrontOrientTopPositionVelocity 的 .z 元素。

对于用户定义的距离曲线,第一个点的距离字段必须为 0.0f,最后一个点的距离字段必须为 1.0f。

如果发射器移动超出 (CurveDistanceScaler × 1.0f) 的距离,则曲线上的最后一个点用于计算音量输出级别。 最后一个点由以下各项确定:

X3DAUDIO_DISTANCE_CURVE.pPoints[PointCount-1].DSPSetting)

内部半径和内部半径角度

InnerRadius 用于指定声音直接通过侦听器上方或下方时,围绕原点平滑过渡的区域。 提升是通过指定 InnerRadiusAngle 来计算的,因此,其高程增加或减少的声音最终将开始将声音出血到两个以上的扬声器。

如果未使用“内部半径”和“内部半径角度”,则发射器在距离其当前位置/方向最近的两个扬声器 (或者,如果直接位于具有一个扬声器定义角度的线条上,则仅从该扬声器) 听到。

“内部半径”和“内部半径角度”对位于它们描述的锥体外部的发射器没有影响。 在圆锥体内部,它们会逐渐使声音流血到相反的扬声器中,直到当发射器与 (位于同一位置或直接高于或低于侦听器) 时,声音在所有扬声器中均能听到。

内部半径和内部半径角度

平台要求

Windows 10 (XAudio2.9) ;Windows 8,Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)

要求

要求
Header x3daudio.h

另请参阅

结构