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 在以前的音频处理传递中显式或隐式调用。 如果对 ISpatialAudioObjectRenderStreamBase::BeginUpdatingAudioObjects 和 ISpatialAudioObjectRenderStreambase::EndUpdatingAudioObjects) 之间的音频处理 (过程中未调用 GetBuffer,则系统隐式调用 SetEndOfStream

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

注解

此方法只能在类型为 AudioObjectType_DynamicISpatialAudioObject 上调用。 使用类型参数将音频对象的 类型 设置为 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