zoukankan      html  css  js  c++  java
  • CUDA C Programming Guide 在线教程学习笔记 Part 6

    ▶ 纹理内存读取函数

      1 /****************************************************************/
      2  
      3 // Texture Object API
      4  
      5 /****************************************************************/
      6 
      7 template<class T>                               
      8 T tex1Dfetch(cudaTextureObject_t texObj, int x);
      9     // 一维纹理,整数下标。只用于非正规化坐标,挤压模式或边界模式,不能滤波
     10 
     11 template<class T>
     12 T tex1D(cudaTextureObject_t texObj, float x);
     13     // 一维纹理,浮点数下标
     14 
     15 template<class T>
     16 T tex1DLod(cudaTextureObject_t texObj, float x, float level);
     17     // 一维纹理,基于 level-of-detail(层次细节)算法
     18 
     19 template<class T>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            
     20 T tex1DGrad(cudaTextureObject_t texObj, float x, float dx, float dy);
     21     // 一维纹理,基于 gradients(梯度)算法
     22 
     23 template<class T>
     24 T tex2D(cudaTextureObject_t texObj, float x, float y);
     25     // 二维纹理
     26 
     27 template<class T>
     28 tex2DLod(cudaTextureObject_t texObj, float x, float y, float level);
     29     // 二维纹理,基于 level-of-detail(层次细节)算法
     30 
     31 template<class T>
     32 T tex2DGrad(cudaTextureObject_t texObj, float x, float y,float2 dx, float2 dy);
     33     // 二维纹理,基于 gradients(梯度)算法
     34 
     35 template<class T>
     36 T tex3D(cudaTextureObject_t texObj, float x, float y, float z);
     37     // 三维纹理
     38 
     39 template<class T>
     40 T tex3DLod(cudaTextureObject_t texObj, float x, float y, float z, float level);
     41     // 三维纹理,基于 level-of-detail(层次细节)算法
     42 
     43 template<class T>
     44 T tex3DGrad(cudaTextureObject_t texObj, float x, float y, float z,float4 dx, float4 dy);
     45     // 三维纹理,基于 gradients(梯度)算法 
     46 
     47 template<class T>
     48 T tex1DLayered(cudaTextureObject_t texObj, float x, int layer);
     49     // 一维分层纹理
     50 
     51 template<class T>
     52 T tex1DLayeredLod(cudaTextureObject_t texObj, float x, int layer, float level);
     53     // 一维分层纹理,基于 level-of-detail(层次细节)算法
     54 
     55 template<class T>
     56 T tex1DLayeredGrad(cudaTextureObject_t texObj, float x, int layer, float dx, float dy);
     57     // 一维分层纹理,基于 gradients(梯度)算法
     58 
     59 template<class T>
     60 T tex2DLayered(cudaTextureObject_t texObj, float x, float y, int layer);
     61     // 二维分层纹理
     62 
     63 template<class T>
     64 T tex2DLayeredLod(cudaTextureObject_t texObj, float x, float y, int layer, float level);
     65     // 二维分层纹理,基于 level-of-detail(层次细节)算法
     66 
     67 template<class T>
     68 T tex2DLayeredGrad(cudaTextureObject_t texObj, float x, float y, int layer, float2 dx, float2 dy);
     69     // 二维分层纹理,基于 gradients(梯度)算法
     70 
     71 template<class T>
     72 T texCubemap(cudaTextureObject_t texObj, float x, float y, float z);
     73     // 立方体贴图纹理
     74 
     75 template<class T>
     76 T texCubemapLod(cudaTextureObject_t texObj, float x, float, y, float z, float level);
     77     // 立方体贴图纹理,基于 level-of-detail(层次细节)算法
     78 
     79 template<class T>
     80 T texCubemapLayered(cudaTextureObject_t texObj, float x, float y, float z, int layer);
     81     // 立方体分层贴图纹理
     82 
     83 template<class T>
     84 T texCubemapLayeredLod(cudaTextureObject_t texObj, float x, float y, float z, int layer, float level);
     85     // 立方分层体贴图纹理,基于 level-of-detail(层次细节)算法 
     86 
     87 template<class T>
     88 T tex2Dgather(cudaTextureObject_t texObj, float x, float y, int comp = 0);
     89     //
     90 
     91 /****************************************************************/
     92 
     93 // Texture Object API
     94 
     95 /****************************************************************/
     96 
     97 template<class DataType>
     98 Type tex1Dfetch(texture<DataType, cudaTextureType1D, cudaReadModeElementType> texRef, int x);
     99 
    100 float tex1Dfetch(texture<unsigned char, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x);
    101 float tex1Dfetch(texture<signed char, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x); 
    102 float tex1Dfetch(texture<unsigned short, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x);
    103 float tex1Dfetch(texture<signed short, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x);
    104     // 一维纹理,整数下标。只用于非正规化坐标,挤压模式或边界模式,不能滤波
    105 
    106 // 2元组,4元组也可以使用这种方法,例如:
    107 float4 tex1Dfetch(texture<uchar2, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x);
    108 float4 tex1Dfetch(texture<uchar4, cudaTextureType1D, cudaReadModeNormalizedFloat> texRef, int x);
    109 
    110 // 其他函数名类似 Texture Object API
    111 template<class DataType, enum cudaTextureReadMode readMode>
    112 Type tex1D(texture<DataType, cudaTextureType1D, readMode> texRef, float x); 
    113 
    114 template<class DataType, enum cudaTextureReadMode readMode>
    115 Type tex1DLod(texture<DataType, cudaTextureType1D, readMode> texRef, float x, float level);
    116 
    117 template<class DataType, enum cudaTextureReadMode readMode>
    118 Type tex1DGrad(texture<DataType, cudaTextureType1D, readMode> texRef, float x, float dx, float dy);
    119 
    120 template<class DataType, enum cudaTextureReadMode readMode>
    121 Type tex2D(texture<DataType, cudaTextureType2D, readMode> texRef,float x, float y);
    122 
    123 template<class DataType, enum cudaTextureReadMode readMode>
    124 Type tex2DLod(texture<DataType, cudaTextureType2D, readMode> texRef, float x, float y, float level);
    125 
    126 template<class DataType, enum cudaTextureReadMode readMode>
    127 Type tex2DGrad(texture<DataType, cudaTextureType2D, readMode> texRef, float x, float y, float2 dx, float2 dy);
    128 
    129 template<class DataType, enum cudaTextureReadMode readMode>
    130 Type tex3D(texture<DataType, cudaTextureType3D, readMode> texRef, float x, float y, float z);
    131 
    132 template<class DataType, enum cudaTextureReadMode readMode>
    133 Type tex3DLod(texture<DataType, cudaTextureType3D, readMode> texRef, float x, float y, float z, float level);
    134 
    135 template<class DataType, enum cudaTextureReadMode readMode>
    136 Type tex3DGrad(texture<DataType, cudaTextureType3D, readMode> texRef, float x, float y, float z, float4 dx, float4 dy);
    137 
    138 template<class DataType, enum cudaTextureReadMode readMode>
    139 Type tex1DLayered(texture<DataType, cudaTextureType1DLayered, readMode> texRef, float x, int layer);
    140 
    141 template<class DataType, enum cudaTextureReadMode readMode>
    142 Type tex1DLayeredLod(texture<DataType, cudaTextureType1D, readMode> texRef, float x, int layer, float level);
    143 
    144 template<class DataType, enum cudaTextureReadMode readMode>
    145 Type tex1DLayeredGrad(texture<DataType, cudaTextureType1D, readMode> texRef, float x, int layer, float dx, float dy);
    146 
    147 template<class DataType, enum cudaTextureReadMode readMode>
    148 Type tex2DLayered(texture<DataType, cudaTextureType2DLayered, readMode> texRef, float x, float y, int layer);
    149 
    150 template<class DataType, enum cudaTextureReadMode readMode>
    151 Type tex2DLayeredLod(texture<DataType, cudaTextureType2D, readMode> texRef, float x, float y, int layer, float level);
    152 
    153 template<class DataType, enum cudaTextureReadMode readMode>
    154 Type tex2DLayeredGrad(texture<DataType, cudaTextureType2D, readMode> texRef, float x, float y, int layer, float2 dx, float2 dy);
    155 
    156 template<class DataType, enum cudaTextureReadMode readMode>
    157 Type texCubemap(texture<DataType, cudaTextureTypeCubemap, readMode> texRef, float x, float y, float z);
    158 
    159 template<class DataType, enum cudaTextureReadMode readMode>
    160 Type texCubemapLod(texture<DataType, cudaTextureType3D, readMode> texRef, float x, float y, float z, float level);
    161 
    162 template<class DataType, enum cudaTextureReadMode readMode>
    163 Type texCubemapLayered(texture<DataType, cudaTextureTypeCubemapLayered, readMode> texRef, float x, float y, float z, int layer);
    164 
    165 template<class DataType, enum cudaTextureReadMode readMode>
    166 Type texCubemapLayeredLod(texture<DataType, cudaTextureType3D, readMode> texRef, float x, float y, float z, int layer, float level);
    167 
    168 template<class DataType, enum cudaTextureReadMode readMode>
    169 Type tex2Dgather(texture<DataType, cudaTextureType2D, readMode> texRef, float x, float y, int comp = 0);

    ▶ 表面内存读写函数

      1 /****************************************************************/
      2 
      3 // Surface Object API
      4 
      5 /****************************************************************/
      6 
      7 template<class T>
      8 T surf1Dread(cudaSurfaceObject_t surfObj, int x, boundaryMode = cudaBoundaryModeTrap);
      9     // 一维表面读取
     10 
     11 template<class T>
     12 void surf1Dwrite(T data, cudaSurfaceObject_t surfObj, int x, boundaryMode = cudaBoundaryModeTrap);
     13     // 一维表面写入
     14 
     15 template<class T>
     16 T surf2Dread(cudaSurfaceObject_t surfObj, int x, int y, boundaryMode = cudaBoundaryModeTrap);
     17     // 二维表面读取
     18 template<class T>
     19 void surf2Dread(T* data, cudaSurfaceObject_t surfObj, int x, int y, boundaryMode = cudaBoundaryModeTrap);
     20     // 二维表面读取
     21 
     22 template<class T>
     23 void surf2Dwrite(T data, cudaSurfaceObject_t surfObj, int x, int y, boundaryMode = cudaBoundaryModeTrap);
     24     // 二维表面写入
     25 
     26 template<class T>
     27 T surf3Dread(cudaSurfaceObject_t surfObj, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
     28     // 三维表面读取
     29 
     30 template<class T>
     31 void surf3Dread(T* data, cudaSurfaceObject_t surfObj, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
     32     // 三维表面读取
     33 
     34 template<class T>
     35 void surf3Dwrite(T data, cudaSurfaceObject_t surfObj, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
     36     // 三维表面写入
     37 
     38 template<class T>
     39 T surf1DLayeredread(cudaSurfaceObject_t surfObj, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
     40     // 一维分层表面读取
     41 
     42 template<class T>
     43 void surf1DLayeredread(T data, cudaSurfaceObject_t surfObj, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
     44     // 一维分层表面读取
     45 
     46 template<class Type>
     47 void surf1DLayeredwrite(T data, cudaSurfaceObject_t surfObj, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
     48     // 一维分层表面写入
     49 
     50 template<class T>
     51 T surf2DLayeredread(cudaSurfaceObject_t surfObj, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
     52     // 二维分层表面读取
     53 
     54 template<class T>
     55 void surf2DLayeredread(T data, cudaSurfaceObject_t surfObj, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
     56     // 二维分层表面读取
     57 template<class T>
     58 void surf2DLayeredwrite(T data, cudaSurfaceObject_t surfObj, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
     59     // 二维分层表面写入
     60 
     61 template<class T>
     62 T surfCubemapread(cudaSurfaceObject_t surfObj, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
     63     // 立方体贴图表面读取
     64 
     65 template<class T>
     66 void surfCubemapread(T data, cudaSurfaceObject_t surfObj, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
     67     // 立方体贴图表面读取
     68 
     69 template<class T>
     70 void surfCubemapwrite(T data, cudaSurfaceObject_t surfObj, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
     71     // 立方体贴图表面写入
     72 
     73 template<class T>
     74 T surfCubemapLayeredread(cudaSurfaceObject_t surfObj, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
     75     // 立方体分层贴图表面读取
     76 
     77 template<class T>
     78 void surfCubemapLayeredread(T data, cudaSurfaceObject_t surfObj, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
     79     // 立方体分层贴图表面读取
     80 
     81 template<class T>
     82 void surfCubemapLayeredwrite(T data, cudaSurfaceObject_t surfObj, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
     83     // 立方体分层贴图表面写入
     84 
     85 /****************************************************************/
     86 
     87 // Surface Refernence API
     88 
     89 /****************************************************************/
     90 
     91 // 函数名类似 Texture Object API
     92 template<class Type>
     93 Type surf1Dread(surface<void, cudaSurfaceType1D> surfRef, int x, boundaryMode = cudaBoundaryModeTrap);
     94 
     95 template<class Type>
     96 void surf1Dread(Type data, surface<void, cudaSurfaceType1D> surfRef, int x, boundaryMode = cudaBoundaryModeTrap);
     97 
     98 template<class Type>
     99 void surf1Dwrite(Type data, surface<void, cudaSurfaceType1D> surfRef, int x, boundaryMode = cudaBoundaryModeTrap);
    100 
    101 template<class Type>
    102 Type surf2Dread(surface<void, cudaSurfaceType2D> surfRef, int x, int y, boundaryMode = cudaBoundaryModeTrap);
    103 
    104 template<class Type>
    105 void surf2Dread(Type* data, surface<void, cudaSurfaceType2D> surfRef, int x, int y, boundaryMode = cudaBoundaryModeTrap);
    106 
    107 template<class Type>
    108 void surf3Dwrite(Type data, surface<void, cudaSurfaceType3D> surfRef, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
    109 
    110 template<class Type>
    111 Type surf3Dread(surface<void, cudaSurfaceType3D> surfRef, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
    112 
    113 template<class Type>
    114 void surf3Dread(Type* data, surface<void, cudaSurfaceType3D> surfRef, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
    115 
    116 template<class Type>
    117 void surf3Dwrite(Type data, surface<void, cudaSurfaceType3D> surfRef, int x, int y, int z, boundaryMode = cudaBoundaryModeTrap);
    118 
    119 template<class Type>
    120 Type surf1DLayeredread(surface<void, cudaSurfaceType1DLayered> surfRef, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
    121 
    122 template<class Type>
    123 void surf1DLayeredread(Type data, surface<void, cudaSurfaceType1DLayered> surfRef, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
    124 
    125 template<class Type>
    126 void surf1DLayeredwrite(Type data, surface<void, cudaSurfaceType1DLayered> surfRef, int x, int layer, boundaryMode = cudaBoundaryModeTrap);
    127 
    128 template<class Type>
    129 Type surf2DLayeredread(surface<void, cudaSurfaceType2DLayered> surfRef, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
    130 
    131 template<class Type>
    132 void surf2DLayeredread(Type data, surface<void, cudaSurfaceType2DLayered> surfRef, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
    133 
    134 template<class Type>
    135 void surf2DLayeredwrite(Type data, surface<void, cudaSurfaceType2DLayered> surfRef, int x, int y, int layer, boundaryMode = cudaBoundaryModeTrap);
    136 
    137 template<class Type>
    138 Type surfCubemapread(surface<void, cudaSurfaceTypeCubemap> surfRef, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
    139 
    140 template<class Type>
    141 void surfCubemapread(Type data, surface<void, cudaSurfaceTypeCubemap> surfRef, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
    142 
    143 template<class Type>
    144 void surfCubemapwrite(Type data, surface<void, cudaSurfaceTypeCubemap> surfRef, int x, int y, int face, boundaryMode = cudaBoundaryModeTrap);
    145 
    146 template<class Type>
    147 Type surfCubemapLayeredread(surface<void, cudaSurfaceTypeCubemapLayered> surfRef, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
    148 
    149 template<class Type>
    150 void surfCubemapLayeredread(Type data, surface<void, cudaSurfaceTypeCubemapLayered> surfRef, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
    151 
    152 template<class Type>
    153 void surfCubemapLayeredwrite(Type data, surface<void, cudaSurfaceTypeCubemapLayered> surfRef, int x, int y, int layerFace, boundaryMode = cudaBoundaryModeTrap);
  • 相关阅读:
    c# DES加密解密
    命令行远程调用图形界面程序
    mpv0.29 vo=x11 resize窗口渲染存在不正常黑色显示
    记qt 焦点状态在多个子窗口的关系
    linux_虚拟机终端连接方法
    python_爬虫_微信公众号抓取
    python_爬虫_multiprocessing.dummy以及multiprocessing
    python_爬虫_腾讯新闻app 单页新闻数据分析爬取
    python_爬虫_Charles手机证书安装问题
    python_爬虫_Selenium_Error
  • 原文地址:https://www.cnblogs.com/cuancuancuanhao/p/7819902.html
Copyright © 2011-2022 走看看