• 第八章 图像和采样器


    本章将介绍图像对象,这是一种特殊类型的内存对象,用来访问2维和3维图像数据。本章给出一个使用图像和采样器的例子,并介绍一下概念:

    • 图像和采样器对象概述
    • 创建图像和采样器对象
    • 指定和查询图像格式
    • 处理图像的OpenCL C函数
    • 传输图像对象数据

    8.1 图像和采样器

    OpenCL中存在图像对象的主要原因是:这样允许程序充分利用CPU中的高性能纹理硬件。此外还可以从其他硬件得到另外一些优点,因此图像对象是OpenCL中处理2维和3维图像数据的最佳方法。

    图像对象封装了有关一个图像的多种信息:

    • 图像大小:2维图像的宽度和高度(以及3维图像的深度)。
    • 图像格式:内存中图像像素的位深度和布局。
    • 内存访问标志:例如,图像是用于读还是写,或者是否可同时读、写。

    内核中从图像对象获取数据时需要采样器。采样器告诉图像读取函数如何访问图像:

    • 坐标模式:从图像获取数据所用的纹理坐标规格化至范围[0...1]还是范围[0...image_dim-1]。
    • 寻址模式:当坐标超出图像边界范围时,从图像获取数据的行为。
    • 过滤模式:从图像获取数据时,取一个样本还是实用多个样本过滤。

    8.2 创建图像对象

    创建图像对象可以通过clCreateImage2D()或clCreateImage3D()完成:

    cl_mem clCreateImage2D(cl_context context,
                                          cl_mem_flags flags,
                                          const cl_image_format* image_format,
                                          size_t image_width,
                                          size_t image_heigth,
                                          size_t image_row_pitch,    
                                          void* host_ptr,
                                          cl_int* errcode_ret)                    
    cl_mem clCreateImage3D(cl_context context, 
                                          cl_mem_flags flags,
                                          const cl_image_format* image_format,
                                          size_t image_width,
                                          size_t image_height,
                                          size_t image_depth,
                                          size_t image_row_pitch,
                                          size_t image_slices_pitch,
                                          void* host_ptr,
                                          cl_int* errcode_ret)
    

    image_row_pitch如果host_ptr不为NULL,这个值指定图像中各行的字节数。如果值为0,则认为长度等于image_width*(bytes_per_pixel)。

    8.3 创建采样器对象

    采样器对象指定了从图像获取数据时使用的过滤、寻址和坐标模式。所有这些选项分别对应于GPU硬件获取纹理的能力。

    过滤模式指定使用最近(nearest)采样还是线性(linear)采样来获取数据。

  • 相关阅读:
    Spring boot如何快速的配置多个Redis数据源
    SMProxy,让你的数据库操作快三倍!
    利用OpenJ9大幅度降低JAVA内存占用
    利用mitmproxy实现抖音Cookie,设备ID获取(一)
    结合AndServer,实现抖音X-Gorgon算法,设备id生成接口
    抖音APP登录分析,Cookie获取
    Spring Boot 最简单整合Shiro+JWT方式
    shiro使用步骤梳理
    梳理搭建SSM步骤
    SSM中保存数据出现415错误
  • 原文地址:https://www.cnblogs.com/tcsong24/p/7656645.html
Copyright © 2020-2023  润新知