OpenGL テクスチャにアルファ チャネルを持つ opencv::mat イメージをロードしたいと考えています。
次の投稿の助けを借りて、opencv::mat から RGB 画像を OpenGL テクスチャにロードすることができました。
https://stackoverflow.com/questions/16809833/opencv-image-loading-for-opengl-texture
しかし、アルファ チャネルを使用して画像を読み込もうとすると、問題が発生します。
glTexImage2D 関数を呼び出す方法は次のとおりです。
glTexImage2D(GL_TEXTURE_2D, // Type of texture
0, // Pyramid level (for mip-mapping) -
GL_RGBA, // Internal colour format to convert to
image.cols, // Image width
image.rows, // Image height
0, // Border width in pixels (can either be 1 or 0)
GL_BGRA_INTEGER, // Input image format
GL_UNSIGNED_BYTE, // Image data type
image.ptr()); // The actual image data itself
また、レンダリングの前に、glEnable(GL_BLEND); を使用してブレンドを有効にします。
入力画像フォーマットと内部カラー フォーマットの両方を GL_RGBA / GL_BGRA に指定すると、セグメンテーション エラーが発生しますが、どちらかまたは両方を GL_RGBA_INTEGER に設定すると、少なくともウィンドウは表示されますが、空白になります。
透明度を変更すると、ウィンドウが多かれ少なかれ透明になりますが、画像はありません。cv::imshow を使用して見ることができるように、cv::mat に画像がありますが、何とか OpenGL テクスチャに渡す際に問題があるようです。
私が見逃しているかもしれない何かを誰かが提案できますか?前もって感謝します。
PS:私はOpenGLの初心者です。詳細を説明していただければ幸いです..:P