半透明で、場所によって不透明度が異なるテクスチャがあります。メインのテクスチャビットマップとマスクビットマップがあります。プログラムが実行されると、マスクビットマップのアルファ値がメインテクスチャビットマップのアルファ値にロードされます。透明にしたい領域の値は255アルファで、完全に不透明にしておきたい領域の値は0アルファです。中間の透明度にも中間の値があります。
あらゆる種類のglBlendFunc()設定を試しましたが、完全に見えないか、ソーステクスチャのRGBカラーに作用します。
半透明で、場所によって不透明度が異なるテクスチャがあります。メインのテクスチャビットマップとマスクビットマップがあります。プログラムが実行されると、マスクビットマップのアルファ値がメインテクスチャビットマップのアルファ値にロードされます。透明にしたい領域の値は255アルファで、完全に不透明にしておきたい領域の値は0アルファです。中間の透明度にも中間の値があります。
あらゆる種類のglBlendFunc()設定を試しましたが、完全に見えないか、ソーステクスチャのRGBカラーに作用します。
通常、OpenGLでは、0は透明、255は不透明を意味します。これは、あなたが持っているのとは逆です。
だから次のようなもの:
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
動作するはずです。
私も同じ問題を抱えていました。SDL_Image
画像の読み込みに使用していました。SDL_DisplayFormat
の代わりに使用していた画像を変換しているときに気づきましたSDL_DisplayFormatAlpha
。これで私の問題は解決しました。