Concurrency::direct3d 命名空间函数 (AMP)

要求

标头: amp.h

命名空间: 并发

abs

返回自变量的绝对值。

inline int abs(int _X) restrict(amp);

参数

_X
整数值

返回值

返回自变量的绝对值。

clamp

计算限定在由第二个和第三个指定自变量定义的范围内的第一个指定自变量的值。

inline float clamp(
    float _X,
    float _Min,
    float _Max) restrict(amp);

inline int clamp(
    int _X,
    int _Min,
    int _Max) restrict(amp);

参数

_X
要固定的值。

_Min
限定范围的下限。

_Max
限定范围的上限。

返回值

_X 的限定值。

countbits

计算 _X中的设置位数。

inline unsigned int countbits(unsigned int _X) restrict(amp);

参数

_X
无符号整数值

返回值

返回 _X中的设置位数。

create_accelerator_view

根据指向 Direct3D 设备接口的指针创建 accelerator_view 对象。

语法

accelerator_view create_accelerator_view(
    IUnknown * _D3D_device,
    queuing_mode _Qmode = queuing_mode_automatic);

accelerator_view create_accelerator_view(
    accelerator& _Accelerator,
    bool _Disable_timeout,
    queuing_mode _Qmode = queuing_mode_automatic);

参数

_Accelerator
要在其上创建新 accelerator_view 的加速器。

_D3D_device
指向 Direct3D 设备接口的指针。

_Disable_timeout
一个布尔参数,用于指定是否应为新创建的 accelerator_view 禁用超时。 这对应于 Direct3D 设备创建的 D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT 标志,并用于指示操作系统是否应允许在不根据 Windows 超时检测和恢复机制重置设备的情况下执行耗时超过 2 秒的工作负载。 如果需要在 accelerator_view 上执行耗时的任务,建议使用此标志。

_Qmode
用于新创建的 accelerator_view 的 queuing_mode。 此参数的默认值为 queuing_mode_automatic

返回值

从传递的 Direct3D 设备接口创建的 accelerator_view 对象。

注解

此函数根据指向 Direct3D 设备接口的现有指针创建新的 accelerator_view 对象。 如果函数调用成功,则该参数的引用计数将根据对接口的 AddRef 调用以递增方式增加。 如果 DirectX 代码中不再需要该对象,则可以安全地释放该对象。 如果方法调用失败,将引发 runtime_exception

使用此函数创建的 accelerator_view 对象是线程安全的。 必须同步 accelerator_view 对象的并发使用。 accelerator_view 对象和原始 ID3D11Device 接口的不同步并发使用会导致未定义的行为。

如果使用 D3D11_CREATE_DEVICE_DEBUG 标志,C++ AMP 运行时将使用 D3D 调试层在调试模式下提供详细的错误信息。

d3d_access_lock

获取 accelerator_view 上的锁,以便安全地对与 accelerator_view 共享的资源执行 D3D 操作。 在执行操作时,accelerator_view 和与此 accelerator_view 关联的所有 C++ AMP 资源将在内部获取此锁,并阻止另一个线程持有 D3D 访问锁。 该锁是非递归的:从已经持有该锁的线程调用此函数是未定义的行为。 从持有 D3D 访问锁的线程对 accelerator_view 或与该 accelerator_view 关联的任何数据容器执行操作是未定义的行为。 另请参阅 scoped_d3d_access_lock(一个 RAII 样式的类),用于基于范围的 D3D 访问锁。

void __cdecl d3d_access_lock(accelerator_view& _Av);

参数

_Av
要锁定的 accelerator_view。

d3d_access_try_lock

尝试在没有阻塞的情况下获取 accelerator_view 上的 D3D 访问锁。

bool __cdecl d3d_access_try_lock(accelerator_view& _Av);

参数

_Av
要锁定的 accelerator_view。

返回值

如果获得了锁,则为 true;如果该锁当前由另一个线程持有,则为 false。

d3d_access_unlock

释放给定 accelerator_view 上的 D3D 访问锁。 如果调用线程没有 accelerator_view 上的锁,则结果是未定义的。

void __cdecl d3d_access_unlock(accelerator_view& _Av);

参数

_Av
要释放锁的 accelerator_view。

firstbithigh

获取 _X中第一个设置位的位置,从最高阶位开始,然后向最低顺序位移动。

inline int firstbithigh(int _X) restrict(amp);

参数

_X
整数值

返回值

第一个集位的位置。

firstbitlow

获取 _X中第一个设置位的位置,从最低顺序位开始,并朝着最高顺序位工作。

inline int firstbitlow(int _X) restrict(amp);

参数

_X
整数值

返回值

返回第一个设置位的位置。

get_buffer

获取指定数组下的 Direct3D 缓冲区接口。

template<
    typename value_type,
    int _Rank
>
IUnknown *get_buffer(
    const array<value_type, _Rank>& _Array);

参数

value_type
数组中元素的类型。

_Rank
数组的秩。

_Array
Direct3D accelerator_view 上的数组,用于返回底层 Direct3D 缓冲区接口。

返回值

对应于数组下的 Direct3D 缓冲区的 IUnknown 接口指针。

get_device

获取 accelerator_view 下的 D3D 设备接口。

IUnknown* get_device(const accelerator_view Av);

参数

Av
用于返回底层 D3D 设备接口的 D3D accelerator_view。

返回值

accelerator_view 下的 D3D 设备的 IUnknown 接口指针。

imax

确定参数的最大数值。

inline int imax(
    int _X,
    int _Y) restrict(amp);

参数

_X
整数值

_Y
整数值

返回值

返回参数的最大数值。

imin

确定参数的最小值。

inline int imin(
    int _X,
    int _Y) restrict(amp);

参数

_X
整数值

_Y
整数值

返回值

返回参数的最小值。

is_timeout_disabled

返回一个布尔标志,该标志指示是否为指定的 accelerator_view 禁用超时。 这对应于 Direct3D 设备创建的 D3D11_CREATE_DEVICE_DISABLE_GPU_TIMEOUT 标志。

bool __cdecl is_timeout_disabled(const accelerator_view& _Accelerator_view);

参数

_Accelerator_view
要查询超时禁用设置的 accelerator_view。

返回值

一个布尔标志,该标志指示是否为指定的 accelerator_view 禁用超时。

mad

计算第一个和第二个指定自变量的乘积,然后添加第三个指定自变量。

inline float mad(
    float _X,
    float _Y,
    float _Z) restrict(amp);

inline double mad(
    double _X,
    double _Y,
    double _Z) restrict(amp);

inline int mad(
    int _X,
    int _Y,
    int _Z) restrict(amp);

inline unsigned int mad(
    unsigned int _X,
    unsigned int _Y,
    unsigned int _Z) restrict(amp);

参数

_X
第一个指定自变量。

_Y
第二个指定自变量。

_Z
第三个指定自变量。

返回值

_X * _Y + _Z 的结果。

make_array

根据 Direct3D 缓冲区接口指针创建数组。

template<
    typename value_type,
    int _Rank
>
array<value_type, _Rank> make_array(
    const extent<_Rank>& _Extent,
    const Concurrency::accelerator_view& _Rv,
    IUnknown* _D3D_buffer);

参数

value_type
要创建的数组的元素类型。

_Rank
要创建的数组的级别。

_Extent
用于描述数组聚合形状的盘区。

_Rv
要在其上创建数组的 D3D 加速器视图。

_D3D_buffer
用于创建数组的 D3D 缓冲区的 IUnknown 接口指针。

返回值

使用提供的 Direct3D 缓冲区创建的数组。

noise

使用 Perlin 干扰算法生成随机值。

inline float noise(float _X) restrict(amp);

参数

_X
从中生成 Perlin 干扰的浮点值。

返回值

返回 -1 和 1 之间的范围内的 Perlin 噪声值。

radians

_X 从度转换为弧度。

inline float radians(float _X) restrict(amp);

参数

_X
浮点值

返回值

返回从度转换为弧度 _X

rcp

使用快速近似值计算指定参数的倒数。

inline float rcp(float _X) restrict(amp);

inline double rcp(double _X) restrict(amp);

参数

_X
要计算倒数的值。

返回值

指定自变量的倒数。

reversebits

反转 _X位的顺序。

inline unsigned int reversebits(unsigned int _X) restrict(amp);

参数

_X
无符号整数值

返回值

返回位顺序在 _X中反转的值。

saturate

固定 _X 介于 0 到 1 的范围内。

inline float saturate(float _X) restrict(amp);

参数

_X
浮点值

返回值

返回固定在 0 到 1 范围内的 _X

sign

确定指定自变量的符号。

inline int sign(int _X) restrict(amp);

参数

_X
整数值

返回值

自变量的符号。

smoothstep

如果 _X 位于 [_Min, _Max] 范围内,则返回介于 0 和 1 之间的平滑 Hermit 内插。

inline float smoothstep(
    float _Min,
    float _Max,
    float _X) restrict(amp);

参数

_Min
浮点值

_Max
浮点值

_X
浮点值

返回值

如果 _X 小于 _Min,则返回 0;如果 _X 大于 _Max,则为 1;否则,如果 _X 位于 [_Min, _Max] 范围内,则值为 0 到 1。

步骤

比较两个值,返回 0 或 1,具体取决于哪个值更大。

inline float step(
    float _Y,
    float _X) restrict(amp);

参数

_Y
浮点值

_X
浮点值

返回值

如果 _X 大于或等于 _Y,则返回 1;否则为 0。

umax

确定参数的最大数值。

inline unsigned int umax(
    unsigned int _X,
    unsigned int _Y) restrict(amp);

参数

_X
整数值

_Y
整数值

返回值

返回参数的最大数值。

umin

确定参数的最小值。

inline unsigned int umin(
    unsigned int _X,
    unsigned int _Y) restrict(amp);

参数

_X
整数值

_Y
整数值

返回值

返回参数的最小值。

另请参阅

Concurrency::direct3d 命名空间