問題タブ [alphablending]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4537 参照

cocoa-touch - サブビューの 1 つで親 UIView のアルファ値をオーバーライドできますか?

いくつかのサブビューを持つやや透明なビュー (アルファ = 0.6) があります。サブビューの 1 つ (UILabel) をアルファ 1.0 で描画したいのは、ブレンドによってテキストが読みにくくなるためですが、それをメイン ビューのサブビューとして追加することで、親のアルファ値が採用されているためです。この動作を無効にする方法はありますか? サブビューから削除する必要があると思いますが、何か不足していないかどうかを確認したかったのです。

0 投票する
2 に答える
1614 参照

.net - .NET でプログラムによって設定されたアルファ チャネルを使用して画像を描画するにはどうすればよいですか?

これは、C++/CLI を使用した Windows フォーム上の .NET アプリケーションです。オブジェクトを表現するためにクライアント領域にペイントしたい JPEG があります。ユーザーがオブジェクトをドラッグしているときなど、場合によっては、オブジェクトを透明にして描画したいと思います。

これを行うためのさまざまな方法は何ですか?

0 投票する
1 に答える
3379 参照

c++ - wxWidgets-アルファブレンディング

wxWidgetに、ビットマップのアルファと他のビットマップのRGBを乗算して新しい画像を生成するなど、アルファブレンディング操作を実行する方法はありますか(写真をアンチエイリアス処理された円形としてレンダリングするなど)。

0 投票する
2 に答える
6900 参照

c# - 透明ビットマップ上のアンチエイリアス テキスト

透明なビットマップにアンチエイリアス処理されたテキストを描画し、アンチエイリアス処理をアルファ ブレンド ピクセルとして描画したいと考えています。このようにして、ビットマップを任意のカラー サーフェス (またはイメージ) に描画できますが、アンチエイリアシングは問題なく表示されます。

問題を示す簡単なサンプルを次に示します。

結果は次のとおりです。

代替テキスト

これの最終的な目標は、UpdateLayeredWindow を使用して透明なアルファ ブレンド ウィンドウを描画することです。私は Conky のようなアプリケーションを作成しており、テキストに ClearType レンダリングを使用できるようにしたいと考えています (もちろん、これはアンチエイリアスなしで簡単です)。

現在、フォームの背後にある画面をつかみ、それを描画してから、テキストを描画します。見た目は良いですが、更新する必要があり、描画が遅いです。デスクトップ上でテキストを描画するための他のアイデアも歓迎します。

0 投票する
3 に答える
1292 参照

c++ - OpenGL でのシーンのクロスフェード

OpenGL で 2 つのシーンをレンダリングし、1 つのシーンから 2 番目のシーンへの視覚的なクロスフェードを実行したいと考えています。これを行う方法を学ぶための出発点を誰かが提案できますか?

0 投票する
3 に答える
3539 参照

graphics - DirectXで2つのスプライトの色を一定のアルファとブレンドする方法は?

基本的に、(DirectXで)私がやりたいのは、2つの部分的に透明な画像を取得し、それらをブレンドすることです。これは、両方がオーバーラップしているなどとして表示される限り、デフォルトのブレンドで正常に機能します。ただし、問題は、2つが交差する場所で不透明度が著しく上昇することです。これにより、より多くのスプライトがオーバーラップするため、問題が増加します。私がやりたいのは、どのようにオーバーラップするかに関係なく、ブレンドされるこれらすべてのスプライトのグローバルな不透明度を維持することを除いて、ブレンドを同じに保つことです。

これにはレンダリング設定があるようです(これらのスプライトはすべてスプライトバッチに単独で含まれているため、その部分が簡単になります)が、そうである場合はわかりません。今、私は暗闇の中で撮影しているようなもので、色々なことを試しましたが、どれもまったく正しく見えませんでした。おそらくD3DBLENDOPのある種のバリアントが必要なことはわかっていますが、実際に必要な設定の種類がわかりません(私は多くのことを試しましたが、この段階ではすべて推測しています)。

これは、標準のブレンディングで実際に起こっていることのスクリーンショットです(私が得ることができる最高のものです):http ://arcengames.com/share/FFActual.pngこれは、ブレンディングをどのように変えたいかをモックアップしたスクリーンショットです。 out(フォースフィールドはPhotoshopの同じレイヤーに追加され、共有アルファ値が与えられました):http ://arcengames.com/share/FFMockup.png

これが私がPhotoshopで行った方法です。1。2つの画像を取得し、すべての透明度を削除します(完全に透明なピクセルを除く)。2.それらを1つのレイヤーに結合します。このレイヤーは、色をブレンドしますが、部分的なアルファはまったくありません。3.次に、そのレイヤーのグローバル透明度を(たとえば)40%に設定します。

その結果、色の点でブレンドされたように見えますが、重なり合った部分の不透明度は増加しません。

更新:さて、Zバッファの使用を提案してくれた以下のGozに感謝します。それはうまくいきます!全体として、ブレンドは完璧で、まさに私が望むものです。残っている唯一の問題は?その新しい方法を使用すると、最後にレンダリングされるフォースフィールドイメージのエッジの周りに巨大なアーティファクトがあります。これを参照してください: http ://www.arcengames.com/share/FFZBuffer.png

更新:以下はC#(SlimDX)の最終的な解決策です

  1. フレームごとに1回、ZBufferを黒、透明、または白にクリアすると、すべて同じ効果があります(これは、BeginSceneが呼び出される直前です)。

Direct3DWrapper.ClearDevice(SlimDX.Direct3D9.ClearFlags.ZBuffer、Color.Transparent、0);

  1. 他のすべてのスプライトはZ=1で描画され、ZBufferは無効になっています。

device.SetRenderState(RenderState.ZEnable、ZBufferType.DontUseZBuffer);

  1. フォースフィールドスプライトはZ=2で描画され、ZBufferが有効で、ZWriteが有効で、ZFuncがLessとして描画されます。

device.SetRenderState(RenderState.ZEnable、ZBufferType.UseZBuffer); device.SetRenderState(RenderState.ZWriteEnable、true); device.SetRenderState(RenderState.ZFunc、Compare.Less);

  1. 私が遭遇した黒い境界線のアーティファクトを防ぐために、この時点で次のフラグも設定されています。

device.SetRenderState(RenderState.AlphaTestEnable、true); device.SetRenderState(RenderState.AlphaFunc、Compare.GreaterEqual); device.SetRenderState(RenderState.AlphaRef、55);

私が使用していた特定のソース画像に設定されたアルファレベルのため、AlphaRefは55であることに注意してください。ソース画像のアルファ値が高い場合は、AlphaRefも高くする必要があります。

0 投票する
7 に答える
46813 参照

iphone - トップ画像のアルファ/透明度に基づいて2つのuiimageをブレンドします

背景を前景画像とブレンドしようとしています。前景画像は線が入った透明な画像です。

私はこのようにしようとしています。

しかし、うまくいかないようです。

任意の提案をいただければ幸いです。

0 投票する
5 に答える
2282 参照

opengl - 透明なテクスチャをレンダリングする

透明な部分がいくつかあるテクスチャが 1 つあります。面が不透明なマテリアル (または単純な場合は色) であるオブジェクトに適用したいのですが、最終的なオブジェクトは透明になります。最終オブジェクトを完全に不透明にしたい。

これが私のコードです:

まず、マテリアルを設定します。

次に、VBO をセットアップします。

そして最後にオブジェクトを描画します

glBlendFunc() にさまざまな引数を渡そうとしましたが、優勢ではありませんでした。ここにソースをアップロードしました: http://dpaste.com/83559/

更新 これを取得しますが、 これ必要です (またはテクスチャなしでこれが必要です)。

2枚目と3枚目はglmで作成したものです。ソースを調べましたが、OpenGL に関する知識が限られているため、あまり理解できませんでした。

0 投票する
1 に答える
297 参照

python - Windows、Mac、Linuxで透明な背景を持つ最新のHTMLとFlashをレンダリングするためのLGPL / Apache / BSD Pythonライブラリはありますか?

DOMアクセスも備えた適切なPythonライブラリを探しています。フラッシュの透明度が引き継がれなくてもかまいません。PyQTのライセンスはプロジェクトと互換性がなく、PySideはまだクロスプラットフォームでコンパイルされていません。何かご意見は?

0 投票する
3 に答える
1714 参照

opengl - テクスチャにレンダリングするときの画像ブレンディングの問題

これは私の最後の質問に関連しています。この画像を取得するには:

http://img252.imageshack.us/img252/623/picture8z.png

  1. 白い背景を描きます(color = (1, 1, 1, 1))。

  2. color =とblend関数を使用して左上の2つの正方形をテクスチャにレンダリングしてから、color=(1, 0, 0, .8)とblend関数(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)を使用してテクスチャを描画し(1, 1, 1, 1)ます(GL_ONE, GL_ONE_MINUS_SRC_ALPHA)

  3. 右下の正方形をcolor=(1, 0, 0, .8)とblend関数で描画します(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

私の計算では、テクスチャへのレンダリングの正方形は色を持っている必要があります

そのため、白い背景にそのテクスチャを描画した後、色を付ける必要があります

右下の正方形は色が付いているはずです

同じように見えるはずです!私の推論は間違っていますか?私の計算は間違っていますか?

いずれにせよ、私の目標は私のシーンの一部をキャッシュすることです。テクスチャにレンダリングしてからそのテクスチャを描画して、シーンをインラインで描画するのと同じようにするにはどうすればよいですか?