zoukankan      html  css  js  c++  java
  • 第八章 图像和采样器

    本章将介绍图像对象,这是一种特殊类型的内存对象,用来访问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的断言工具类Assert的基本使用
    开发工具推荐
    IDEA 接口调试插件 HTTP Client
    【笔记0-开篇】面试官系统精讲Java源码及大厂真题
    面试题:HashSet、TreeSet 和HashMap 的实现与原理
    Mybatis面试问题集锦
    分组拼接字符串,GROUP_CONCAT
    跨表更新,Mysql Update Join
    【设计模式】UML类图及Java的类之间的关系
    Sql性能优化梳理
  • 原文地址:https://www.cnblogs.com/tcsong24/p/7656645.html
Copyright © 2011-2022 走看看