OpenCV  4.10.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=ARRAY_BUFFER, bool autoRelease=false) const
 创建缓冲对象及其底层数据的完整副本。
 
int cols () const
 
void copyFrom (InputArray arr, cuda::Stream &stream, 目标 target=ARRAY_BUFFER, bool autoRelease=false)
 
void copyFrom (InputArray arr, 目标 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=ARRAY_BUFFER, bool autoRelease=false)
 ogl::Buffer 对象分配内存。
 
void create (Size asize, int atype, 目标 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)
 将OpenGL缓冲区映射到主机内存。
 
void release ()
 递减引用计数并在必要时销毁缓冲区对象。
 
int rows () const
 
void setAutoRelease (bool flag)
 设置自动释放模式。
 
Size size () const
 
int type () const
 
void unmapDevice ()
 
void 取消设备映射 (cuda::Stream &stream)
 取消 OpenGL 缓冲区的映射。
 
void 取消 host 映射 ()
 取消 OpenGL 缓冲区的映射。
 

静态公有成员函数

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

详细描述

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

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

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

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

成员枚举文档

◆ Access

枚举
只读
只写
读写

◆ Target

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

枚举
数组缓冲区

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

元素数组缓冲区

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

像素打包缓冲区

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

像素解包缓冲区

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

构造函数 & 析构函数文档

◆ Buffer() [1/6]

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

构造函数。

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

◆ Buffer() [2/6]

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

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

参数
acols2D 数组中的行数。
acols2D 数组中的列数。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
acols缓冲区对象名称。
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ Buffer() [3/6]

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

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

参数
asize2D数组大小。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
acols缓冲区对象名称。
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ Buffer() [4/6]

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

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

参数
acols2D 数组中的行数。
acols2D 数组中的列数。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
目标缓冲区使用方式。参见 cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ Buffer() [5/6]

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

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

参数
asize2D数组大小。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
目标缓冲区使用方式。参见 cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ Buffer() [6/6]

cv::ogl::Buffer::Buffer ( 输入数组  arr,
目标  target = ARRAY_BUFFER,
bool  autoRelease = false 
)
明确

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

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

成员函数文档

◆ bind()

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

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

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

◆ bufId()

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

获取OpenGL对象ID

◆ channels()

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

◆ clone()

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

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

参数
目标缓冲区使用方式用于目标缓冲区。
autoRelease目标缓冲区的自动释放模式。

◆ cols()

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

◆ copyFrom() [1/2]

void cv::ogl::Buffer::copyFrom ( 输入数组  arr,
cuda::Stream   stream,
目标  target = ARRAY_BUFFER,
bool  autoRelease = false 
)

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

◆ copyFrom() [2/2]

void cv::ogl::Buffer::copyFrom ( 输入数组  arr,
目标  target = ARRAY_BUFFER,
bool  autoRelease = false 
)

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

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

◆ copyTo() [1/2]

void cv::ogl::Buffer::copyTo ( 输出数组  arr) const

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

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

◆ copyTo() [2/2]

void cv::ogl::Buffer::copyTo ( 输出数组  arr,
cuda::Stream   stream 
) const

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

◆ create() [1/2]

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

ogl::Buffer 对象分配内存。

参数
acols2D 数组中的行数。
acols2D 数组中的列数。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
目标缓冲区使用方式。参见 cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ create() [2/2]

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

这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。

参数
asize2D数组大小。
acols数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat
目标缓冲区使用方式。参见 cv::ogl::Buffer::Target
autoRelease自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。

◆ 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() [2/2]

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

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

此操作不复制数据。一次可以映射多个缓冲对象到CUDA内存。

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

◆ mapHost()

Mat cv::ogl::Buffer::mapHost ( 访问  访问)

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

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

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

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

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

参数
访问访问策略,指示是否可以从、写入或读写缓冲区对象的映射数据存储。符号常量必须是 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对象。

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

◆ size()

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

◆ type()

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

◆ unbind()

static void cv::ogl::Buffer::unbind ( 目标  目标)
static

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

参数
目标绑定点。参见 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 缓冲区的映射。


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