OpenCV 4.10.0
开源计算机视觉
|
具有引用计数的OpenGL缓冲对象智能指针。更多...
#include <opencv2/core/opengl.hpp>
公共类型 | |
枚举 | 访问 { 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 内存。
cv::ogl::Buffer::Buffer | ( | ) |
构造函数。
创建空的 ogl::Buffer 对象,从现有缓冲区创建 ogl::Buffer 对象(abufId 参数),为 ogl::Buffer 对象分配内存或从主机/设备内存复制。
cv::ogl::Buffer::Buffer | ( | int | acols, |
int | acols, | ||
int | acols, | ||
unsigned int | acols, | ||
bool | autoRelease = false |
||
) |
cv::ogl::Buffer::Buffer | ( | Size | asize, |
int | acols, | ||
unsigned int | acols, | ||
bool | autoRelease = false |
||
) |
cv::ogl::Buffer::Buffer | ( | int | acols, |
int | acols, | ||
int | acols, | ||
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
acols | 2D 数组中的行数。 |
acols | 2D 数组中的列数。 |
acols | 数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
cv::ogl::Buffer::Buffer | ( | Size | asize, |
int | acols, | ||
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
asize | 2D数组大小。 |
acols | 数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
|
明确 |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
arr | 输入数组(主机或设备内存,可以是 Mat , cuda::GpuMat 或 std::vector )。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
void cv::ogl::Buffer::bind | ( | 目标 | 目标 | ) | const |
将OpenGL缓冲区绑定到指定的缓冲区绑定点。
目标 | 绑定点。参见 cv::ogl::Buffer::Target 。 |
unsigned int cv::ogl::Buffer::bufId | ( | ) | const |
获取OpenGL对象ID
int cv::ogl::Buffer::channels | ( | ) | const |
缓冲区 cv::ogl::Buffer::clone | ( | 目标 | target = ARRAY_BUFFER , |
bool | autoRelease = false |
||
) | const |
创建缓冲对象及其底层数据的完整副本。
目标 | 缓冲区使用方式用于目标缓冲区。 |
autoRelease | 目标缓冲区的自动释放模式。 |
int cv::ogl::Buffer::cols | ( | ) | const |
void cv::ogl::Buffer::copyFrom | ( | 输入数组 | arr, |
cuda::Stream | stream, | ||
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
void cv::ogl::Buffer::copyFrom | ( | 输入数组 | arr, |
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
从主机/设备内存复制到OpenGL缓冲区。
arr | 输入数组(主机或设备内存,可以是 Mat , cuda::GpuMat 或 std::vector )。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
void cv::ogl::Buffer::copyTo | ( | 输出数组 | arr | ) | const |
从OpenGL缓冲区复制到主机/设备内存或另一个OpenGL缓冲区对象。
arr | 目标数组(主机或设备内存,可以是 Mat , cuda::GpuMat , std::vector 或 ogl::Buffer )。 |
void cv::ogl::Buffer::copyTo | ( | 输出数组 | arr, |
cuda::Stream | stream | ||
) | const |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
void cv::ogl::Buffer::create | ( | int | acols, |
int | acols, | ||
int | acols, | ||
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
为 ogl::Buffer 对象分配内存。
acols | 2D 数组中的行数。 |
acols | 2D 数组中的列数。 |
acols | 数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
void cv::ogl::Buffer::create | ( | Size | asize, |
int | acols, | ||
目标 | target = ARRAY_BUFFER , |
||
bool | autoRelease = false |
||
) |
这是重载的成员函数,提供便利。它与上面函数的不同之处在于它接受的参数(s)。
asize | 2D数组大小。 |
acols | 数组类型(CV_8UC1,...,CV_64FC4)。有关详细信息,请参阅 Mat。 |
目标 | 缓冲区使用方式。参见 cv::ogl::Buffer::Target 。 |
autoRelease | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
int cv::ogl::Buffer::depth | ( | ) | const |
int cv::ogl::Buffer::elemSize | ( | ) | const |
int cv::ogl::Buffer::elemSize1 | ( | ) | const |
bool cv::ogl::Buffer::empty | ( | ) | const |
cuda::GpuMat cv::ogl::Buffer::mapDevice | ( | ) |
映射到设备内存(阻塞)
cuda::GpuMat cv::ogl::Buffer::mapDevice | ( | cuda::Stream | stream | ) |
将OpenGL缓冲区映射到CUDA设备内存。
此操作不复制数据。一次可以映射多个缓冲对象到CUDA内存。
在使用其缓冲对象之前,必须使用 ogl::Buffer::unmapDevice 对映射的数据存储进行取消映射。
将OpenGL缓冲区映射到主机内存。
mapHost将缓冲对象的整个数据存储映射到客户端地址空间。然后,可以根据指定的访问策略直接读取和/或写入相对于返回指针的数据。
在使用其缓冲对象之前,必须使用 ogl::Buffer::unmapHost 对映射的数据存储进行取消映射。
此操作可能会导致主机和设备之间的内存传输。
一次只能映射一个缓冲对象。
访问 | 访问策略,指示是否可以从、写入或读写缓冲区对象的映射数据存储。符号常量必须是 ogl::Buffer::READ_ONLY 、 ogl::Buffer::WRITE_ONLY 或 ogl::Buffer::READ_WRITE 。 |
void cv::ogl::Buffer::release | ( | ) |
递减引用计数并在必要时销毁缓冲区对象。
此函数将调用setAutoRelease(true)。
int cv::ogl::Buffer::rows | ( | ) | const |
void cv::ogl::Buffer::setAutoRelease | ( | bool | 标志 | ) |
设置自动释放模式。
OpenGL对象的生命周期与上下文的生命周期相关联。如果OpenGL上下文绑定到窗口,它可以在任何时候释放(用户可以关闭窗口)。如果对象的析构函数在上下文销毁后调用,将导致错误。因此,ogl::Buffer 默认情况下不会在其析构函数中销毁OpenGL对象(所有OpenGL资源将在OpenGL上下文中释放)。此函数可以强制 ogl::Buffer 析构函数销毁OpenGL对象。
标志 | 自动释放模式(如果为 true,则将在对象的析构函数中调用释放)。 |
大小 cv::ogl::Buffer::size | ( | ) | const |
int cv::ogl::Buffer::type | ( | ) | const |
|
static |
从指定的绑定点取消任何缓冲区。
目标 | 绑定点。参见 cv::ogl::Buffer::Target 。 |
void cv::ogl::Buffer::unmapDevice | ( | ) |
void cv::ogl::Buffer::unmapDevice | ( | cuda::Stream | stream | ) |
取消 OpenGL 缓冲区的映射。
void cv::ogl::Buffer::unmapHost | ( | ) |
取消 OpenGL 缓冲区的映射。