下の画像で3つの背景がある:黒、白&グレーWindowsとOS XのOpenGLアルファブレンドの違いは何ですか?
それぞれに3つのバーがある:黒 - >透明、白 - >透明、および色 - >透明
私が使用していglBlendFuncは(GL_SRC_ALPHA、GL_ONE_MINUS_SRC_ALPHA);すべての頂点の色は1,1,1,0です。
欠陥は、白い背景の白い背景に実際に見えます。
Windows XP(および他のウィンドウの味)では、完全に機能し、完全に白くなります。 Macではしかし、私は真ん中に灰色になる!
なぜこのようなことが起こりますか、白を白に混ぜると、なぜ暗くなりますか?
Windowsでは、OpenGLのバージョンについては関係するように見えるdoesntの:更新情報が
http://dl.dropbox.com/u/9410632/mac-colorbad.png @
のスクリーンショットフルサイズです。 2.0から3.2まで、すべて動作します。 私は今、私の前にMacを持っています。それは2.1です。
グラデーションはテクスチャで保持され、すべての頂点は1,1,1,1(白色rgb、完全アルファ)に着色されています。背景は1x1ピクセルのテクスチャ(勾配で塗りつぶした)で、頂点は必要に応じてフルアルファで塗りつぶします。
アトラスはglTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, data);
で作成されています。自分で作ったARGB ddsファイルから来ています。
私もすべてがtrivally簡単なシェーダを使用して描画されることに注意してください:アルファ制服は今1.0
に設定されている
uniform sampler2D tex1; uniform float alpha; void main() { gl_FragColor = gl_Color * texture2D(tex1, gl_TexCoord[0].st) * vec4(1.0, 1.0, 1.0, alpha); }
白のグラデーションではなかったので、私はそれを変更しようとしませんでしたテクスチャですが、左のものは白と不透明の4つの頂点だけで、右のものは1,1,1,0です。
私は今トリプルテクスチャをチェックしており、アルファ1.0 - > 0.0のアルファを変えて白いだけです。
私はこれがデフォルトの問題かもしれないと思っています。 OpenGLやドライバのバージョンは、物事を別々に初期化するかもしれません。
例えば、私は最近誰もがGL_TEXTURE_2D glEnabledをデフォルトで持っているが、インテルGME965は持っていないことを発見しました。
溶液を
まず、もう少し背景を発見しました。このプログラムは実際には.NET(OS XのMonoを使用)で書かれており、私が書いているDDSファイルは24ビットPNGファイルのディレクトリをできるだけ小さなテクスチャに圧縮して自動的に生成されるアトラスです。 System.Drawing.Bitmapを使用してこれらのPNGをロードし、レイアウトを決定した後、より大きなビットマップにレンダリングします。そのポストレイアウトのビットマップはロックされ(バイトになるように)、それらは私が書いたコードでDDSに書き出されます。
バーバーのアドバイスを読んだとき、私は記憶の中のテクスチャをチェックしました。彼らは確かに異なっていました!ロードされた私のDDSは、OpenGLの設定ではなく、犯人のようです。今日は、2つのプラットフォーム(バイト比較のためのバイトを使用して)でDDSファイル自体をチェックアウトしましたが、実際には異なっていました。 WTV(http://developer.nvidia.com/object/windows_texture_viewer.html)を使用してDDSファイルを読み込むと、それらは同じように見えます。ただし、WTVを使用すると、各チャンネル(R G B A)をオフにすることができます。私がAlphaチャンネルを切り替えたとき、窓で私は本当に見栄えの悪い画像を見ました。アルファはアンチエイリアスされていないエッジにつながりませんので、恐ろしく見えます。 OSX DDSでアルファチャンネルをオフにしたとき、うまく見えました!
MonoのPNGローダーが事前に乗っているため、すべての問題が発生しています。私はそれらのチケット(https://bugzilla.novell.com/show_bug.cgi?id=679242)を入力し、libpngを使用して直接切り替えました。
ありがとうございました!
レンダリングサーフェスのフォーマットは何ですか?特にSRGBに関して?白い白は私に困ってしまった。 – Bahbar
バーはテクスチャを使用して、または色補間を使用して描かれていますか? – rotoglup
頂点は1,1,1,0?黒、白、灰色の背景があっても? –