OpenCV 4.5.3(日本語機械翻訳)
公開型 | 公開メンバ関数 | 静的公開メンバ関数 | 全メンバ一覧
cv::ogl::Buffer クラス

Smart pointer for OpenGL buffer object with reference counting. [詳解]

#include <opengl.hpp>

公開型

enum Target { ARRAY_BUFFER = 0x8892 , ELEMENT_ARRAY_BUFFER = 0x8893 , PIXEL_PACK_BUFFER = 0x88EB , PIXEL_UNPACK_BUFFER = 0x88EC }
ターゲットは、バッファオブジェクトをどのように使用するかを定義します。[【詳解】(英語]
enum Access { READ_ONLY = 0x88B8 , WRITE_ONLY = 0x88B9 , READ_WRITE = 0x88BA }

公開メンバ関数

Buffer ()
コンストラクタには[【詳解】(英語]
Buffer (int arows, int acols, int atype, unsigned int abufId, bool autoRelease=false)
Buffer (Size asize, int atype, unsigned int abufId, bool autoRelease=false)
Buffer (int arows, int acols, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
Buffer (Size asize, int atype, Target target=ARRAY_BUFFER, bool autoRelease=false)
Buffer (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false)
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)
void release ()
参照カウンタをデクリメントし、必要であればバッファオブジェクトを破棄します。[【詳解】(英語]
void setAutoRelease (bool flag)
オートリリースモードを設定します。[【詳解】(英語]
void copyFrom (InputArray arr, Target target=ARRAY_BUFFER, bool autoRelease=false)
ホスト/デバイスのメモリからOpenGLバッファにコピーします。[【詳解】(英語]
void copyFrom (InputArray arr, cuda::Stream &stream, Target target=ARRAY_BUFFER, bool autoRelease=false)
void copyTo (OutputArray arr) const
OpenGLバッファからホスト/デバイスメモリまたは他のOpenGLバッファオブジェクトにコピーします。[【詳解】(英語]
void copyTo (OutputArray arr, cuda::Stream &stream) const
Buffer clone (Target target=ARRAY_BUFFER, bool autoRelease=false) const
バッファオブジェクトとその基礎となるデータの完全なコピーを作成します。[【詳解】(英語]
void bind (Target target) const
OpenGLバッファを、指定されたバッファバインディングポイントにバインドします。[【詳解】(英語]
Mat mapHost (Access access)
OpenGLバッファをホストメモリにマッピングします。[【詳解】(英語]
void unmapHost ()
OpenGLバッファをアンマップします。
cuda::GpuMat mapDevice ()
デバイスメモリへのマッピング(ブロッキング)
void unmapDevice ()
cuda::GpuMat mapDevice (cuda::Stream &stream)
OpenGLバッファをCUDAデバイスメモリにマッピングします。[【詳解】(英語]
void unmapDevice (cuda::Stream &stream)
OpenGLバッファをアンマップします。
int rows () const
int cols () const
Size size () const
bool empty () const
int type () const
int depth () const
int channels () const
int elemSize () const
int elemSize1 () const
unsigned int bufId () const
OpenGL opject idの取得

静的公開メンバ関数

static void unbind (Target target)
指定されたバインディングポイントから任意のバッファのバインドを解除します。[【詳解】(英語]

詳解

参照カウントを行うOpenGLバッファオブジェクトのスマートポインタです。

Bufferオブジェクトは、OpenGLコンテキストによって割り当てられたフォーマットされていないメモリの配列を格納するOpenGLオブジェクトです。これらは、頂点データ、画像やフレームバッファから取得したピクセルデータ、その他様々なものを格納するために使用できます。

ogl::Bufferと同様のインターフェースを持ちMatインターフェイスを持ち、2次元配列メモリを表します。

ogl::Bufferホストとデバイス間のメモリ転送をサポートし、CUDAメモリにマッピングすることもできます。

列挙型メンバ詳解

Target

ターゲットは、バッファオブジェクトをどのように使用するかを定義します。

列挙値
ARRAY_BUFFER

バッファは頂点データのソースとして使用されます。

エレメント_アレイ_バッファ

バッファはインデックスのために使用されます (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 arows,
int acols,
int atype,
unsigned int abufId,
bool autoRelease = false
)

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arows 2D配列の行数。
acols 2 次元配列の列数.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
abufId Bufferオブジェクト名を参照してください.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

Buffer() [3/6]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
asize 2次元配列のサイズ.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
abufId Bufferオブジェクト名を参照してください.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

Buffer() [4/6]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arows 2D配列の行数。
acols 2 次元配列の列数.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

Buffer() [5/6]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
asize 2次元配列のサイズ.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

Buffer() [6/6]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
arr 入力配列 (ホストまたはデバイスのメモリ,それはMat,cuda::GpuMatまたはstd::vector )を参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

関数詳解

bind()

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

OpenGLバッファを、指定されたバッファバインディングポイントにバインドします。

引数
target バインディングポイント。を参照してください。cv::ogl::Buffer::Target.

clone()

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

バッファオブジェクトとその基礎となるデータの完全なコピーを作成します。

引数
target Bufferデスティネーションバッファの使用法。
autoRelease デスティネーションバッファの自動リリースモード。

copyFrom() [1/2]

void cv::ogl::Buffer::copyFrom ( InputArray arr,
cuda::Stream & 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 入力配列 (ホストまたはデバイスのメモリ,それはMat,cuda::GpuMatまたはstd::vector )を参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

copyTo() [1/2]

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

OpenGLバッファからホスト/デバイスメモリまたは他のOpenGLバッファオブジェクトにコピーします。

引数
arr コピー先の配列(ホストやデバイスのメモリ。Mat,cuda::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 2D配列の行数。
acols 2 次元配列の列数.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

create() [2/2]

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

これはオーバーロードされたメンバ関数です。利便性のために用意されています。元の関数との違いは引き数のみです。

引数
asize 2次元配列のサイズ.
atype 配列の種類 ( CV_8UC1, ..., CV_64FC4 ).参照Matを参照してください。
target Buffer使い方.参照cv::ogl::Buffer::Target.
autoRelease 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

mapDevice()

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

OpenGLバッファをCUDAデバイスメモリにマッピングします。

この操作はデータをコピーしません。一度に複数のバッファオブジェクトをCUDAメモリにマップすることができます。

マップされたデータストアは、そのバッファオブジェクトが使用される前に ogl::Buffer::unmapDevice でアンマップされなければなりません。

mapHost()

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

OpenGLバッファをホストメモリにマッピングします。

mapHostは、バッファオブジェクトのデータストア全体をクライアントのアドレス空間にマップします。データは、指定されたアクセスポリシーに応じて、返されたポインタに対して直接読み書きすることができます。

マップされたデータストアは、そのバッファオブジェクトを使用する前にogl::Buffer::unmapHostでアンマップする必要があります。

この操作は、ホストとデバイス間のメモリ転送につながる可能性があります。

一度にマッピングできるバッファオブジェクトは1つだけです。

引数
access アクセスポリシー:バッファオブジェクトのマッピングされたデータストアからの読み込み、書き込み、または読み込みと書き込みの両方が可能かどうかを示します。シンボリック定数は ogl::Buffer::READ_ONLY , ogl::Buffer::WRITE_ONLY または ogl::Buffer::READ_WRITE でなければなりません。

release()

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

参照カウンタをデクリメントし、必要であればバッファオブジェクトを破棄します。

この関数は setAutoRelease(true) を呼び出します。

setAutoRelease()

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

オートリリースモードを設定します。

OpenGLオブジェクトのライフタイムは、コンテキストのライフタイムと結びついています。OpenGLコンテキストがウィンドウにバインドされていた場合,いつでも解放される可能性があります(ユーザがウィンドウを閉じることができます).コンテキストの破壊後にオブジェクトのデストラクタが呼ばれるとエラーになります。したがってogl::BufferはデフォルトではデストラクタでOpenGLオブジェクトを破壊しません(すべてのOpenGLリソースはOpenGLコンテキストとともに解放されます)。この関数は、デストラクタがOpenGLオブジェクトを破壊するようにogl::BufferデストラクタにOpenGLオブジェクトを破壊させることができます。

引数
flag 自動リリースモード(true の場合,オブジェクトのデストラクタ内でリリースが呼ばれます).

unbind()

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

指定されたバインディングポイントから任意のバッファのバインドを解除します。

引数
target バインディングポイント。を参照してください。cv::ogl::Buffer::Target.

このクラス詳解は次のファイルから抽出されました: