OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
cv::ogl::Buffer 类参考

具有引用计数的 OpenGL 缓冲区对象的智能指针。 更多…

#include <opencv2/core/opengl.hpp>

cv::ogl::Buffer 的协作图

公共类型

枚举  访问权限 {
  READ_ONLY = 0x88B8 ,
  WRITE_ONLY = 0x88B9 ,
  READ_WRITE = 0x88BA
}
 
枚举  目标 {
  ARRAY_BUFFER = 0x8892 ,
  ELEMENT_ARRAY_BUFFER = 0x8893 ,
  PIXEL_PACK_BUFFER = 0x88EB ,
  PIXEL_UNPACK_BUFFER = 0x88EC
}
 目标定义了您打算如何使用缓冲区对象。 更多…
 

公共成员函数

 Buffer ()
 构造函数。
 
 Buffer (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false)
 
 Buffer (int arows, int acols, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
 
 Buffer (int arows, int acols, int atype, unsigned int abufId, bool autoRelease=false)
 
 Buffer (Size asize, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
 
 Buffer (Size asize, int atype, unsigned int abufId, bool autoRelease=false)
 
void bind (Target target) const
 将 OpenGL 缓冲区绑定到指定的缓冲区绑定点。
 
unsigned int bufId () const
 获取 OpenGL 对象 ID
 
int channels () const
 
Buffer clone (Target target=ARRAY_BUFFER, bool autoRelease=false) const
 创建缓冲区对象及其底层数据的完整副本。
 
int cols () const
 
void copyFrom (InputArray arr, cuda::Stream &stream, Target target=ARRAY_BUFFER, bool autoRelease=false)
 
void copyFrom (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false)
 从主机/设备内存复制到 OpenGL 缓冲区。
 
void copyTo (OutputArray arr) const
 从 OpenGL 缓冲区复制到主机/设备内存或另一个 OpenGL 缓冲区对象。
 
void copyTo (OutputArray arr, cuda::Stream &stream) const
 
void create (int arows, int acols, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
 ogl::Buffer 对象分配内存。
 
void create (Size asize, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
 
int depth () const
 
int elemSize () const
 
int elemSize1 () const
 
bool empty () const
 
cuda::GpuMat 映射到设备内存(阻塞) ()
 mapDevice
 
cuda::GpuMat mapDevice (cuda::Stream &stream)
 将 OpenGL 缓冲区映射到 CUDA 设备内存。
 
Mat mapHost (Access access)
 将 OpenGL 缓冲区映射到主机内存。
 
void release ()
 递减引用计数,如果需要则销毁缓冲区对象。
 
int rows () const
 
void setAutoRelease (bool flag)
 设置自动释放模式。
 
Size size () const
 
int type () const
 
void unmapDevice ()
 
void unmapDevice (cuda::Stream &stream)
 取消映射 OpenGL 缓冲区。
 
void unmapHost ()
 取消映射 OpenGL 缓冲区。
 

静态公共成员函数

static void unbind (Target target)
 从指定的绑定点取消绑定任何缓冲区。
 

详细描述

具有引用计数的 OpenGL 缓冲区对象的智能指针。

Buffer 对象是 OpenGL 对象,它存储由 OpenGL 上下文分配的未格式化内存数组。这些可用于存储顶点数据、从图像或帧缓冲区检索的像素数据以及各种其他内容。

ogl::Buffer 具有类似于 Mat 接口的接口,并表示二维数组内存。

ogl::Buffer 支持主机和设备之间的内存传输,并且可以映射到 CUDA 内存。

成员枚举文档

◆ 访问权限

枚举器
只读 
只写 
读写 

◆ 目标

目标定义了您打算如何使用缓冲区对象。

枚举器
数组缓冲区 

该缓冲区将用作顶点数据的源。

元素数组缓冲区 

该缓冲区将用于索引(例如,在 glDrawElements 中)。

像素打包缓冲区 

该缓冲区将用于从 OpenGL 纹理读取。

像素解包缓冲区 

该缓冲区将用于写入 OpenGL 纹理。

构造函数和析构函数文档

◆ Buffer() [1/6]

cv::ogl::Buffer::Buffer ( )

构造函数。

创建空的ogl::Buffer对象,从现有缓冲区(abufId 参数)创建ogl::Buffer对象,为ogl::Buffer对象分配内存或从主机/设备内存复制。

◆ Buffer() [2/6]

cv::ogl::Buffer::Buffer ( int arows,
int acols,
int atype,
unsigned int abufId,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
arows二维数组中的行数。
acols二维数组中的列数。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
abufIdBuffer 对象名称。
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ Buffer() [3/6]

cv::ogl::Buffer::Buffer ( Size asize,
int atype,
unsigned int abufId,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
asize二维数组大小。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
abufIdBuffer 对象名称。
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ Buffer() [4/6]

cv::ogl::Buffer::Buffer ( int arows,
int acols,
int atype,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
arows二维数组中的行数。
acols二维数组中的列数。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ Buffer() [5/6]

cv::ogl::Buffer::Buffer ( Size asize,
int atype,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
asize二维数组大小。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ Buffer() [6/6]

cv::ogl::Buffer::Buffer ( InputArray arr,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )
显式

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
arr输入数组(主机或设备内存,可以是Matcuda::GpuMat或std::vector)。
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

成员函数文档

◆ bind()

void cv::ogl::Buffer::bind ( 目标 target) const

将 OpenGL 缓冲区绑定到指定的缓冲区绑定点。

参数
target绑定点。参见cv::ogl::Buffer::Target

◆ bufId()

unsigned int cv::ogl::Buffer::bufId ( ) const

获取 OpenGL 对象 ID

◆ channels()

int cv::ogl::Buffer::channels ( ) const

◆ clone()

Buffer cv::ogl::Buffer::clone ( 目标 target = ARRAY_BUFFER,
bool autoRelease = false ) const

创建缓冲区对象及其底层数据的完整副本。

参数
target目标缓冲区的Buffer 用法。
autoRelease目标缓冲区的自动释放模式。

◆ cols()

int cv::ogl::Buffer::cols ( ) const

◆ copyFrom() [1/2]

void cv::ogl::Buffer::copyFrom ( InputArray arr,
cuda::Stream & stream,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

◆ copyFrom() [2/2]

void cv::ogl::Buffer::copyFrom ( InputArray arr,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

从主机/设备内存复制到 OpenGL 缓冲区。

参数
arr输入数组(主机或设备内存,可以是Matcuda::GpuMat或std::vector)。
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ copyTo() [1/2]

void cv::ogl::Buffer::copyTo ( OutputArray arr) const

从 OpenGL 缓冲区复制到主机/设备内存或另一个 OpenGL 缓冲区对象。

参数
arr目标数组(主机或设备内存,可以是Matcuda::GpuMat、std::vector或ogl::Buffer)。

◆ copyTo() [2/2]

void cv::ogl::Buffer::copyTo ( OutputArray arr,
cuda::Stream & stream ) const

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

◆ create() [1/2]

void cv::ogl::Buffer::create ( int arows,
int acols,
int atype,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

ogl::Buffer 对象分配内存。

参数
arows二维数组中的行数。
acols二维数组中的列数。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ create() [2/2]

void cv::ogl::Buffer::create ( Size asize,
int atype,
目标 target = ARRAY_BUFFER,
bool autoRelease = false )

这是一个重载成员函数,为了方便提供。它与上面的函数的不同之处仅在于它接受的参数。

参数
asize二维数组大小。
atype数组类型 (CV_8UC1, ..., CV_64FC4)。详情请参见Mat
targetBuffer 用法。参见cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ depth()

int cv::ogl::Buffer::depth ( ) const

◆ elemSize()

int cv::ogl::Buffer::elemSize ( ) const

◆ elemSize1()

int cv::ogl::Buffer::elemSize1 ( ) const

◆ empty()

bool cv::ogl::Buffer::empty ( ) const

◆ mapDevice() [1/2]

cuda::GpuMat cv::ogl::Buffer::mapDevice ( )

mapDevice

◆ mapDevice() [2/2]

cuda::GpuMat cv::ogl::Buffer::mapDevice ( cuda::Stream & stream)

将 OpenGL 缓冲区映射到 CUDA 设备内存。

此操作不会复制数据。可以同时将多个缓冲区对象映射到 CUDA 内存。

在使用其缓冲区对象之前,必须使用ogl::Buffer::unmapDevice取消映射已映射的数据存储。

◆ mapHost()

Mat cv::ogl::Buffer::mapHost ( 访问权限 access)

将 OpenGL 缓冲区映射到主机内存。

mapHost 将缓冲区对象的整个数据存储映射到客户端的地址空间。然后,可以根据指定的访问策略直接读取和/或写入相对于返回指针的数据。

在使用其缓冲区对象之前,必须使用ogl::Buffer::unmapHost取消映射已映射的数据存储。

此操作可能会导致主机和设备之间的内存传输。

一次只能映射一个缓冲区对象。

参数
access访问策略,指示是否可以从缓冲区对象的已映射数据存储读取、写入或同时读取和写入。符号常量必须是ogl::Buffer::READ_ONLYogl::Buffer::WRITE_ONLYogl::Buffer::READ_WRITE

◆ release()

void cv::ogl::Buffer::release ( )

递减引用计数,如果需要则销毁缓冲区对象。

该函数将调用 setAutoRelease(true)。

◆ rows()

int cv::ogl::Buffer::rows ( ) const

◆ setAutoRelease()

void cv::ogl::Buffer::setAutoRelease ( bool 标记)

设置自动释放模式。

OpenGL 对象的生命周期与上下文的生命周期绑定。如果 OpenGL 上下文绑定到窗口,则它可以随时释放(用户可以关闭窗口)。如果在上下文销毁后调用对象的析构函数,则会发生错误。因此,ogl::Buffer 默认情况下不会在其析构函数中销毁 OpenGL 对象(所有 OpenGL 资源都将与 OpenGL 上下文一起释放)。此函数可以强制ogl::Buffer 析构函数销毁 OpenGL 对象。

参数
标记自动释放模式(如果为真,则将在对象的析构函数中调用释放)。

◆ size()

大小 cv::ogl::Buffer::size ( ) const

◆ type()

int cv::ogl::Buffer::type ( ) const

◆ unbind()

static void cv::ogl::Buffer::unbind ( 目标 target)
静态

从指定的绑定点取消绑定任何缓冲区。

参数
target绑定点。参见cv::ogl::Buffer::Target

◆ unmapDevice() [1/2]

void cv::ogl::Buffer::unmapDevice ( )

◆ unmapDevice() [2/2]

void cv::ogl::Buffer::unmapDevice ( cuda::Stream & stream)

取消映射 OpenGL 缓冲区。

◆ unmapHost()

void cv::ogl::Buffer::unmapHost ( )

取消映射 OpenGL 缓冲区。


此类的文档是从以下文件生成的