30.04.2014 Views

NVIDIA CUDA 计算统一设备架构

NVIDIA CUDA 计算统一设备架构

NVIDIA CUDA 计算统一设备架构

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

定<br />

类<br />

,cudaFilterModeLinear 是<br />

<br />

<br />

在<br />

cudaChannelFormatKindUnsigned, 在<br />

(bit)<br />

cudaChannelFormatKindSigned,<br />

指<br />

定<br />

;channelDesc 的<br />

为<br />

类<br />

;addressMode 是<br />

(wrap)<br />

或<br />

;filterMode<br />

)texel 的<br />

的<br />

:<br />

和<br />

4.5.2.6 纹 理 参 考 管 理<br />

<br />

高<br />

<br />

struct textureReference<br />

{<br />

int normalized;<br />

enum cudaTextureFilterMode filterMode;<br />

enum cudaTextureAddressMode addressMode[3];<br />

struct cudaChannelFormatDesc channelDesc;<br />

}<br />

Normalized<br />

纹 理 坐 标 寻 址 , 而 指<br />

depth<br />

filterMode<br />

cudaFilterModePoint<br />

指 是<br />

纹 理 大 小 ; 定 过 滤 模 式 , 即 拾 取 根 据 输 入 的 纹 理 坐 标 计 算 的 纹 理 时 如 何 返 回 值 或 或<br />

的 纹 理 , 如 下<br />

1]<br />

型<br />

围 内 的 范<br />

于 所 返 回 的 值 为 纹 理 等<br />

级 API<br />

texture 的 义<br />

API 一 种 公 开 继 承 自 低 级 是 型<br />

textureReference 的 义<br />

其<br />

[0, 理 坐 标 是 否 为 归 一 化 形 式 ; 如 果 非 零 , 纹 理 中 的 所 有 元 素 都 将 使 用 纹 定<br />

非 [0,width-1]、[0,height-1]<br />

[0,depth-1],<br />

width、height 的 中<br />

<br />

addressMode 指<br />

如 输 入 纹 理 坐 标 的 两 个 ( 针 对 一 维 纹 理 )、 四 个 ( 针 对 二 维 纹 理 ) 或 八 个 ( 针 对 三 维 纹 理 如<br />

组 , 其 第 一 个 、 第 二 个 和 第 三 个 元 素 分 别 指 定 第 一 个 、 第 二 个 和 第 三 个 纹 理 坐 标 的 寻 址 模 式 ; 寻 址 模<br />

线 性<br />

则 所 返 回 的 值 为 纹 理 坐 标 最 接 近 则<br />

cudaFilterModeLinear;<br />

等 于 cudaFilterModePoint, 果<br />

标 最 接 近 输 入 纹 理 坐 标 的 texel; 坐<br />

等 于 cudaFilterModeLinear, 果<br />

channelDesc 描<br />

struct cudaChannelFormatDesc {<br />

int x, y, z, w;<br />

enum cudaChannelFormatKind f;<br />

};<br />

值 ; 对 于 浮 点 型 的 返 回 值 插<br />

此 此<br />

和<br />

等<br />

述 拾 取 纹 理 时 所 返 回 的 值 的 格 式<br />

型 如 下 : 类<br />

一 的 有 效 值 。 惟<br />

到 (clamp)<br />

到<br />

这 些 分 量 是 有 符 号 整 型 时 ; 这 些 分 量 是 无 符 号 整 型 时 ; :<br />

定 寻 址 模 式 , 表 明 如 何 处 理 超 出 范 围 的 纹 理 坐 标<br />

3 大 小 为 个 一<br />

数<br />

可 等 于 cudaAddressModeClamp, 式<br />

时 超 出 范 围 的 纹 理 坐 标 将 被 调 整<br />

有 效 范 围 之 内 , 也<br />

等 于 cudaAddressModeWrap, 可<br />

时 超 出 范 围 的 纹 理 坐 标 将 被 限 定<br />

效 范 围 之 内 ; 有<br />

于 规 范 化 的 纹 理 坐 标 , 仅 支 持 cudaAddressModeWrap。 对<br />

些 分 量 是 浮 点 类 型 时 。 这<br />

组 的 纹<br />

cudaChannelFormatKindFloat, <br />

normalized、addressMode 和 可 在<br />

数<br />

数<br />

x、y、z 中 其<br />

w<br />

于 返 回 值 各 分 量 的 位<br />

f 而 ,<br />

<br />

<br />

texture texRef;<br />

textureReference* texRefPtr;<br />

cudaGetTextureReference(&texRefPtr, “texRef”);<br />

cudaChannelFormatDesc channelDesc =<br />

cudaCreateChannelDesc();<br />

cudaBindTexture(0, texRefPtr, devPtr, &channelDesc, size);<br />

参 考 。 在 内 核 使 用 纹 理 参 考 从 纹 理 存 储 器 中 读 取 之 前 , 必 须 使 将 纹 理 参 考 绑 定 到 纹 理 。 理<br />

下 代 码 示 例 将 一 个 纹 理 参 考 绑 定 向 的 线 性 存 储 器 : 使 用 低 以<br />

texture texRef;<br />

cudaBindTexture(0, texRef, devPtr, size);<br />

数<br />

filterMode<br />

<strong>CUDA</strong> 在 宿 主 代 码 中 修 改 。 它 们 仅 适 用 于 绑 定 到 接 直<br />

级 API:<br />

<br />

texture texRef;<br />

textureReference* texRefPtr;<br />

cudaGetTextureReference(&texRefPtr, “texRef”);<br />

cudaChannelFormatDesc channelDesc;<br />

<strong>CUDA</strong> 代 码 示 例 将 一 个 纹 理 参 考 绑 定 到 使 用 低 下 以<br />

用 cudaBindTexture()<br />

cudaBindTextureToArray()<br />

<strong>CUDA</strong> 编<br />

27<br />

到 devPtr<br />

组 cuArray:<br />

用 高 级 API: 使<br />

2.0 南 , 版 本 指 程<br />

级 API:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!