OpenCV 4.12.0
開源計算機視覺
載入中...
搜尋中...
無匹配項
cv::ogl::Buffer 類參考

帶有引用計數的 OpenGL 緩衝區物件智慧指標。更多...

#include <opencv2/core/opengl.hpp>

cv::ogl::Buffer 的協作圖

公共型別

列舉  Access {
  READ_ONLY = 0x88B8 ,
  WRITE_ONLY = 0x88B9 ,
  READ_WRITE = 0x88BA
}
 
列舉  Target {
  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 緩衝區物件智慧指標。

緩衝區物件是 OpenGL 物件,用於儲存由 OpenGL 上下文分配的未格式化記憶體陣列。它們可用於儲存頂點資料、從影像或幀緩衝區檢索的畫素資料以及各種其他資料。

ogl::Buffer 具有類似於 Mat 介面的介面,並表示 2D 陣列記憶體。

ogl::Buffer 支援主機和裝置之間的記憶體傳輸,也可以對映到 CUDA 記憶體。

成員列舉文件

◆ 訪問模式

列舉器
READ_ONLY 
WRITE_ONLY 
READ_WRITE 

◆ 目標

目標定義了您打算如何使用緩衝區物件。

列舉器
ARRAY_BUFFER 

此緩衝區將用作頂點資料的來源。

ELEMENT_ARRAY_BUFFER 

此緩衝區將用於索引(例如在 glDrawElements 中)

PIXEL_PACK_BUFFER 

此緩衝區將用於從 OpenGL 紋理讀取資料。

PIXEL_UNPACK_BUFFER 

此緩衝區將用於寫入 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
abufId緩衝區物件名稱。
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ Buffer() [3/6]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

引數
asize2D 陣列大小。
atype陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat
abufId緩衝區物件名稱。
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ Buffer() [4/6]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

引數
arows二維陣列中的行數。
acols二維陣列中的列數。
atype陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ Buffer() [5/6]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

引數
asize2D 陣列大小。
atype陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ Buffer() [6/6]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

引數
arr輸入陣列(主機或裝置記憶體,可以是 Matcuda::GpuMat 或 std::vector )。
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

成員函式文件

◆ bind()

void cv::ogl::Buffer::bind ( Target 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 target = ARRAY_BUFFER,
bool autoRelease = false ) const

建立緩衝區物件及其底層資料的完整副本。

引數
target目標緩衝區的緩衝區用途。
autoRelease目標緩衝區的自動釋放模式。

◆ cols()

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

◆ copyFrom() [1/2]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

◆ copyFrom() [2/2]

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

將資料從主機/裝置記憶體複製到 OpenGL 緩衝區。

引數
arr輸入陣列(主機或裝置記憶體,可以是 Matcuda::GpuMat 或 std::vector )。
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ 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 target = ARRAY_BUFFER,
bool autoRelease = false )

ogl::Buffer 物件分配記憶體。

引數
arows二維陣列中的行數。
acols二維陣列中的列數。
atype陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ create() [2/2]

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

這是一個過載成員函式,為方便起見而提供。它與上述函式的區別僅在於所接受的引數。

引數
asize2D 陣列大小。
atype陣列型別 (CV_8UC1, ..., CV_64FC4)。詳見 Mat
target緩衝區用途。詳見 cv::ogl::Buffer::Target
autoRelease自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ 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 & )

將 OpenGL 緩衝區對映到 CUDA 裝置記憶體。

此操作不復制資料。多個緩衝區物件可以同時對映到 CUDA 記憶體。

對映的資料儲存在使用其緩衝區物件之前必須透過 ogl::Buffer::unmapDevice 解除對映。

◆ mapHost()

Mat cv::ogl::Buffer::mapHost ( Access 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 flag)

設定自動釋放模式。

OpenGL 物件的生命週期與上下文的生命週期繫結。如果 OpenGL 上下文繫結到視窗,則可以在任何時候釋放它(使用者可以關閉視窗)。如果在上下文銷燬後呼叫物件的解構函式,則會導致錯誤。因此,ogl::Buffer 預設不會在解構函式中銷燬 OpenGL 物件(所有 OpenGL 資源都將隨 OpenGL 上下文一起釋放)。此函式可以強制 ogl::Buffer 解構函式銷燬 OpenGL 物件。

引數
flag自動釋放模式(如果為 true,則在物件的解構函式中呼叫 release)。

◆ size()

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

◆ type()

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

◆ unbind()

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

從指定的繫結點解除繫結任何緩衝區。

引數
target繫結點。詳見 cv::ogl::Buffer::Target

◆ unmapDevice() [1/2]

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

◆ unmapDevice() [2/2]

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

取消對映 OpenGL 緩衝區。

◆ unmapHost()

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

取消對映 OpenGL 緩衝區。


此類的文件是從以下檔案生成的