Class cv::ogl::Buffer#

Smart pointer for OpenGL buffer object with reference counting. View details

Collaboration diagram for cv::ogl::Buffer:

Public Types#

enum Access {
    READ_ONLY = 0x88B8,
    WRITE_ONLY = 0x88B9,
    READ_WRITE = 0x88BA
}

The target defines how you intend to use the buffer object.

enum Target {
    ARRAY_BUFFER = 0x8892,
    ELEMENT_ARRAY_BUFFER = 0x8893,
    PIXEL_PACK_BUFFER = 0x88EB,
    PIXEL_UNPACK_BUFFER = 0x88EC
}

Detailed Description#

Smart pointer for OpenGL buffer object with reference counting.

Buffer Objects are OpenGL objects that store an array of unformatted memory allocated by the OpenGL context. These can be used to store vertex data, pixel data retrieved from images or the framebuffer, and a variety of other things.

ogl::Buffer has interface similar with Mat interface and represents 2D array memory.

ogl::Buffer supports memory transfers between host and device and also can be mapped to CUDA memory.

Member Enumeration Documentation#

enum Access

READ_ONLY
Python: cv.ogl.Buffer_READ_ONLY

WRITE_ONLY
Python: cv.ogl.Buffer_WRITE_ONLY

READ_WRITE
Python: cv.ogl.Buffer_READ_WRITE

enum Target

The target defines how you intend to use the buffer object.

ARRAY_BUFFER
Python: cv.ogl.Buffer_ARRAY_BUFFER

The buffer will be used as a source for vertex data.

ELEMENT_ARRAY_BUFFER
Python: cv.ogl.Buffer_ELEMENT_ARRAY_BUFFER

The buffer will be used for indices (in glDrawElements, for example)

PIXEL_PACK_BUFFER
Python: cv.ogl.Buffer_PIXEL_PACK_BUFFER

The buffer will be used for reading from OpenGL textures.

PIXEL_UNPACK_BUFFER
Python: cv.ogl.Buffer_PIXEL_UNPACK_BUFFER

The buffer will be used for writing to OpenGL textures.

Constructor & Destructor Documentation#

Buffer()#

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

The constructors.

Creates empty ogl::Buffer object, creates ogl::Buffer object from existed buffer ( abufId parameter), allocates memory for ogl::Buffer object or copies from host/device memory.

Buffer()#

cv::ogl::Buffer::Buffer(
InputArray arr,
Target target = ARRAY_BUFFER,
bool autoRelease = false )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • arr — Input array (host or device memory, it can be Mat , cuda::GpuMat or std::vector ).

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

Buffer()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • arows — Number of rows in a 2D array.

  • acols — Number of columns in a 2D array.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

Buffer()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • arows — Number of rows in a 2D array.

  • acols — Number of columns in a 2D array.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • abufIdBuffer object name.

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

Buffer()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • asize — 2D array size.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

Buffer()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • asize — 2D array size.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • abufIdBuffer object name.

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

Member Function Documentation#

bind()#

void cv::ogl::Buffer::bind(Target target)

Binds OpenGL buffer to the specified buffer binding point.

Parameters

bufId()#

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

get OpenGL opject id

channels()#

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

clone()#

Buffer cv::ogl::Buffer::clone(
Target target = ARRAY_BUFFER,
bool autoRelease = false )

Creates a full copy of the buffer object and the underlying data.

Parameters

  • targetBuffer usage for destination buffer.

  • autoRelease — Auto release mode for destination buffer.

cols()#

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

copyFrom()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

copyFrom()#

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

Copies from host/device memory to OpenGL buffer.

Parameters

  • arr — Input array (host or device memory, it can be Mat , cuda::GpuMat or std::vector ).

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

copyTo()#

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

Copies from OpenGL buffer to host/device memory or another OpenGL buffer object.

Parameters

copyTo()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

create()#

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

Allocates memory for ogl::Buffer object.

Parameters

  • arows — Number of rows in a 2D array.

  • acols — Number of columns in a 2D array.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

create()#

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

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Parameters

  • asize — 2D array size.

  • atype — Array type ( CV_8UC1, …, CV_64FC4 ). See Mat for details.

  • targetBuffer usage. See cv::ogl::Buffer::Target .

  • autoRelease — Auto release mode (if true, release will be called in object’s destructor).

depth()#

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

elemSize()#

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

elemSize1()#

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

empty()#

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

mapDevice()#

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

map to device memory (blocking)

mapDevice()#

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

Maps OpenGL buffer to CUDA device memory.

This operation doesn’t copy data. Several buffer objects can be mapped to CUDA memory at a time.

A mapped data store must be unmapped with ogl::Buffer::unmapDevice before its buffer object is used.

mapHost()#

Mat cv::ogl::Buffer::mapHost(Access access)

Maps OpenGL buffer to host memory.

mapHost maps to the client’s address space the entire data store of the buffer object. The data can then be directly read and/or written relative to the returned pointer, depending on the specified access policy.

A mapped data store must be unmapped with ogl::Buffer::unmapHost before its buffer object is used.

This operation can lead to memory transfers between host and device.

Only one buffer object can be mapped at a time.

Parameters

release()#

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

Decrements the reference counter and destroys the buffer object if needed.

The function will call setAutoRelease(true) .

rows()#

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

setAutoRelease()#

void cv::ogl::Buffer::setAutoRelease(bool flag)

Sets auto release mode.

The lifetime of the OpenGL object is tied to the lifetime of the context. If OpenGL context was bound to a window it could be released at any time (user can close a window). If object’s destructor is called after destruction of the context it will cause an error. Thus ogl::Buffer doesn’t destroy OpenGL object in destructor by default (all OpenGL resources will be released with OpenGL context). This function can force ogl::Buffer destructor to destroy OpenGL object.

Parameters

  • flag — Auto release mode (if true, release will be called in object’s destructor).

size()#

Size cv::ogl::Buffer::size()

type()#

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

unmapDevice()#

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

unmapDevice()#

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

Unmaps OpenGL buffer.

unmapHost()#

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

Unmaps OpenGL buffer.

unbind()#

static void cv::ogl::Buffer::unbind(Target target)

Unbind any buffers from the specified binding point.

Parameters

Member Data Documentation#

cols_#

int cv::ogl::Buffer::cols_

impl_#

Ptr< Impl > cv::ogl::Buffer::impl_

rows_#

int cv::ogl::Buffer::rows_

type_#

int cv::ogl::Buffer::type_

Source file#

The documentation for this class was generated from the following file: