Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
cudaUnbindTexture() 用 。<br />
填<br />
完<br />
及<br />
<br />
cudaGetChannelDesc(&channelDesc, cuArray);<br />
cudaBindTextureToArray(texRef, cuArray, &channelDesc);<br />
texture texRef;<br />
cudaBindTextureToArray(texRef, cuArray);<br />
4.5.2.7 OpenGL 互 操 作 性<br />
GLuint bufferObj;<br />
cudaGLRegisterBufferObject(bufferObj);<br />
返<br />
用 高 级 API: 使<br />
纹 理 绑 定 到 纹 理 参 考 时 指 定 的 格 式 必 须 与 声 明 纹 理 参 考 时 指 定 的 参 数 相 匹 配 ; 否 则 纹 理 拾 取 的 结 果 将 无 法 确 定 于 解 除 纹 理 参 考 的 绑 定 。 将<br />
GLuint bufferObj;<br />
float* devPtr;<br />
cudaGLMapBufferObject((void**)&devPtr, bufferObj);<br />
之<br />
取 完<br />
4.5.2.8 Direct3D 互 操 作 性<br />
先 必 须 将 一 个 缓 冲 对 象 注 册 到 <strong>CUDA</strong>, 首<br />
cudaGLRegisterBufferObject() 能 进 行 映 射 。 可 通 过 才 后<br />
: 成<br />
cudaGLMapBufferObject() 完 成 后 , 内 核 即 可 使 用 册 注<br />
的 设 备 存 储 器 地 址 读 取 或 写 入 缓 冲 对 象 : 回<br />
Direct3D<br />
Direct3D 设 互<br />
指<br />
cudaGLUnmapBufferObject() 映 射 是 通 过 除 解<br />
cudaGLUnregisterBufferObject() , 可 使 用 的 成<br />
注 册 。 消<br />
将<br />
资<br />
LPDIRECT3DVERTEXBUFFER9 buffer;<br />
cudaD3D9RegisterResource(buffer, cudaD3D9RegisterFlagsNone);<br />
LPDIRECT3DSURFACE9 surface;<br />
cudaD3D9RegisterResource(surface, cudaD3D9RegisterFlagsNone);<br />
cudaD3D9RegisterResource()<br />
cudaD3D9UnregisterVertexBuffer()<br />
cudaD3D9MapResources()<br />
有 较 高 的 开 销 , 通 常 仅 为 每 个 资 源 调 用 一 次 。 使 用 可 之 后 , 即 可 在 需 要 时 分 和 任 返 和 具 能 可<br />
。 备<br />
cudaD3D9SetDirect3DDevice() 性 要 求 在 执 行 其 他 任 何 运 行 时 调 用 之 前 通 过 作 操<br />
定<br />
cudaD3D9RegisterResource() 即 可 使 用 后 随<br />
Direct3D<br />
cudaD3D9ResourceGetMappedSize()<br />
cudaD3D9ResourceGetMappedPitchSlice() 返 访 、<br />
回 的 设 备 存 储 器 地 址<br />
注 册 到 <strong>CUDA</strong>: 源<br />
意 多 次 地 映 射 和 解 除 映<br />
<strong>CUDA</strong> 注 册 。 将 资 源 注 册 到 消 取<br />
void* devPtr;<br />
cudaD3D9ResourceGetMappedPointer(&devPtr, buffer);<br />
size_t size;<br />
cudaD3D9ResourceGetMappedSize(&size, buffer);<br />
cudaMemset(devPtr, 0, size);<br />
height) 的<br />
cudaD3D9ResourceGetMappedPointer() 内 核 可 使 用 回 的 大 小 和 间 距 信 息 来 读 取 和 写 入 已 映 射 的 资 源 。 通 问 已 映 射 的 资 源 将 导 致 不 确 定 的 结 果 。 射 。<br />
一 个 缓 冲 区 : 了 充<br />
使 用 别<br />
cudaD3D9UnmapResources()<br />
cudaD3D9ResourceGetMappedPitch()<br />
过 Direct3D<br />
// host code<br />
void* devPtr;<br />
cudaD3D9ResourceGetMappedPointer(&devPtr, surface);<br />
size_t pitch;<br />
cudaD3D9ResourceGetMappedPitch(&pitch, surface);<br />
dim3 Db = dim3(16, 16);<br />
dim3 Dg = dim3((width+Db.x–1)/Db.x, (height+Db.y–1)/Db.y);<br />
myKernel((unsigned char*)devPtr,<br />
width, height, pitch);<br />
// device code<br />
维 表 面 的 一 个 像 素 , 像 素 格 式 为 二<br />
28 <strong>CUDA</strong> 编<br />
0 的 代 码 示 例 使 用 面 下<br />
float4:<br />
(width, 面 的 代 码 示 例 中 , 每 个 线 程 都 访 问 大 小 为 下 在<br />
2.0 南 , 版 本 指 程