2010-12-13 16 views
0

テクスチャは半透明であり、異なる位置で不透明度が変化します。私はメインテクスチャビットマップとマスクビットマップを持っています。プログラムが実行されると、マスクビットマップのアルファ値がメインテクスチャビットマップのアルファ値にロードされます。私が透明にしたい領域は255アルファの値を持ち、私が完全に不透明にしておきたい領域は0アルファの値を持っています。中間透明度のための中間値もあります。32ビットRGBAテクスチャを使用したglBlendFunc()

すべての方法でglBlendFunc()設定を試しましたが、完全に見えないか、ソーステクスチャのRGBカラーに作用します。

答えて

4

一般に、OpenGLでは0は透明を意味し、255は不透明であり、これは逆の意味です。

そうのようなもの:

glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); 

が動作するはずです。

+0

私はそれを試しました。テクスチャが透明になっているのはどこでも黒です。 – oldSkool

+0

@ old-school rules:描画したときにフレームバッファに黒以外のものがあったことを確認してください。あなたのクリアな色は何ですか?黒の場合は、別のものを使用して描画オーダーの問題かどうかを確認してください。 – Bahbar

+0

私はすべてをもう一度チェックします...私は、透明性がどのように働いているかを見るために背景を赤色にクリアしていますが、今は真剣に取り締まっています。 – oldSkool

0

私は同じ問題がありました。私は画像をロードするのにSDL_Imageを使っていました。私がSDL_DisplayFormatAlphaの代わりにSDL_DisplayFormatを使っていた画像を変換しているときに気づいた。これは私の問題を解決しました。

関連する問題