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 之间的平滑厄米特内插。
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
整数值
返回值
返回自变量的最小数值