ISpatialAudioObject::SetPosition 方法 (spatialaudioclient.h)

设置在 3D 空间中相对于侦听器的位置,从中呈现 ISpatialAudioObject 音频数据。

语法

HRESULT SetPosition(
  [in] float x,
  [in] float y,
  [in] float z
);

参数

[in] x

音频对象的 x 位置(以米为单位),相对于侦听器。 正值位于侦听器右侧,负值位于左侧。

[in] y

音频对象的 y 位置(以米为单位),相对于侦听器。 正值高于侦听器,负值低于侦听器。

[in] z

音频对象的 z 位置(以米为单位),相对于侦听器。 正值位于侦听器后面,负值位于前面。

返回值

如果该方法成功,则它会返回 S_OK。 如果失败,可能的返回代码包括但不限于下表中显示的值。

返回代码 说明
SPTLAUDCLNT_E_OUT_OF_ORDER

在调用 SetPosition 之前,未调用 ISpatialAudioObjectRenderStreamBase::BeginUpdatingAudioObjects

SPTLAUDCLNT_E_RESOURCES_INVALIDATED

在以前的音频处理过程中,已显式或隐式调用 SetEndOfStream。 如果未在音频处理中调用 GetBuffer,则系统会隐式调用 SetEndOfStream,并在调用 ISpatialAudioObjectsISpatialAudioObjects) 之间 (。

SPTLAUDCLNT_E_PROPERTY_NOT_SUPPORTED
ISpatialAudioObject 的类型不是AudioObjectType_Dynamic。 使用 type 参数将音频对象的 类型 设置为 ISpatialAudioObjectRenderStreamBase::ActivateSpatialAudioObject 方法。

注解

只能在类型为 AudioObjectType_DynamicISpatialAudioObject 上调用此方法。 使用 type 参数将音频对象的 类型 设置为 ISpatialAudioObjectRenderStreamBase::ActivateSpatialAudioObject 方法。

位置值使用右手笛卡尔坐标系,其中每个单位表示 1 米。 坐标系相对于侦听器,其中原点 (x=0.0,y=0.0,z=0.0) 表示侦听器耳朵之间的中心点。

如果从不调用 SetPosition ,则原点 (x=0.0,y=0.0,z=0.0) 用作默认位置。 调用 SetPosition 后,设置的位置将用于音频对象,直到通过另一次调用 SetPosition 更改位置。

要求

要求
目标平台 Windows
标头 spatialaudioclient.h

另请参阅

ISpatialAudioObject