問題タブ [blending]
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.
directx - DirectX でアルファブレンディングを有効にする方法は?
DirectXでこれを行う方法は?
どういうわけか、私はそれを機能させることができないようです。コードを使用しています:
しかし、それはある種のゴーストメソッドで私のポリゴンをレンダリングします.私はすべてのポリゴンを通して見ることができます! 完全に透明なテクスチャの部分を透けて見えるように、アルファ チャネルを使用してテクスチャを作成したいだけです。これは alphatest で機能しますが、まだ黒いエッジが表示されるため、 D3DRS_ALPHABLENDENABLE を設定してもブレンドが有効になっていないと思います! 私は何を間違っていますか?
java - 複合材のブレンド..いくつかの説明をお願いします
Romain Guy がブレンド複合BlendingComposite--Romain Guyで何をしたかを理解しようとしています。これは私が少なくとも知っていることだと思います。
- 画像はその情報を色の配列で保持します(各ピクセルの情報)
- ブレンディングはこれらのピクセルを取得し、アルゴリズムを使用してそれらを組み合わせて最終的なピクセルを作成します。
これらの画像のピクセル配列を取得して操作する方法がわかりません。
ブレンディングコンポジットはどのように作成されますか?
ご協力いただき、ありがとうございました。
android - Desire HD と A500 Tab でブレンディングが同じように機能しない
OpenGLを使用してライブ壁紙を簡単に作成できるようにするためのlibgdxの上にある小さなフレームワークであるgdxlwと同様に、libgdxを使用してライブ壁紙を作成しています。
まず、GL20 を使用していないことを確認します。なるべくGL10/GL11をキープしたいです。シンプルな OrthographicCamera を使用しています。
各レンダー呼び出しで行うこと:
1...使用
gl11.glClearColor(1, 1, 1, 1);
gl11.glClear(GL11.GL_COLOR_BUFFER_BIT);
画面を白く塗りつぶします。
2...たとえば、SpriteBatch を使用して上部に黒い四角を描画し、
batch.setBlendFunction(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
3 ...この上に、SpriteBatch を使用して大きな (通常はスケーリングされた) 画像を描画し、
batch.setBlendFunction(GL11.GL_DST_COLOR, GL11.GL_ONE_MINUS_DST_COLOR);
これにより、白い場所ではなく、すでに黒い場所にのみその大きな画像が描画されます。期待どおりに機能し、私のプロジェクトに最適です。
これは私の HTC Desire HD (Android 2.3.5) で完璧に動作します。ただし、Acer Iconia A500 タブレット (Android 3.2.1) でまったく同じアプリを実行すると、大きな画像が混合せずに黒と白の両方の背景に描画されます。
大きな画像を描画するときにブレンドを変更しようとしても、結果は常に同じです。本来あるべき黒い四角が表示されていません。大きな画像はそのすぐ上をブルドーザーします。
私は何が間違っているのでしょうか?私は何かが欠けている可能性がありますか?
注目すべき興味深い点は、さまざまなブレンドを使用して大きな画像を描画した後 (後で)、いくつかのランダムなスプライトを描画しようとしたことです。つまり、ブレンドが完全に無効になっているわけではありません。
ブレンドするとき、大きな画像は小さな画像とは異なる動作をしますか?
注意すべきもう 1 つの興味深い点は、大きな画像で線形フィルタリングを使用すると、実際には黒い四角形が非常にかすかに見えることです。ただし、Nearest フィルタリングでは表示されません。
混乱した質問をお許しください。今は「どうしてこうなった」ということしか頭にありません。私は一日中髪を引っ張っていて、多くのアプローチを試みましたが成功しませんでした.
libgdx はタブレットや Android 3 以降と互換性がありませんか? 私はそれへの参照を見つけることができません。
gdxlwが犯人ですか?
編集: いくつかのテストを行ったところ、GL11 の代わりに GL20 を使用するようにアプリを変更すると、Desire HD で Acer Iconia A500 と同じ結果が得られることがわかりました。つまり、私は自分の大きな画像を見て、非常に (!) ぼんやりとその背後にある黒を確認できます。
また、Acer Iconia A500 タブレットで GL11 バージョンを実行して logcat を見ています。それは次のように述べています...
...意図したとおりに OpenGL ES 1.1 を使用しているように思えます。しかし、「CM」が何の略なのかについての情報は見つかりませんでした。ただし、同じアプリ バージョンを実行している Desire HD の logcat を見ると、次のようになります。
...私のタブレットと同じバージョンの OpenGL を使用していると記載されています。
両方が同じバージョンである場合、両方の実装が同じように動作するはずではありませんか?
1 つは Nvidia Tegra で、もう 1 つは Qualcomm で、ハードウェアに違いはありますか?
OpenGL 1.1 は Tegra デバイス上で何らかの形で、そして不完全に「エミュレート」されていますか?
また、「OGL 拡張機能」のリストが一部異なることもわかります。たとえば、「blend」を含むものを検索するGL_OES_blend_equation_separate
とGL_OES_blend_func_separate
、GL_OES_blend_subtract
Desire HD では A500 では何も見つかりませんでした。
問題がこれらの拡張機能にある場合、(可能であれば) どうすれば解決できますか?
編集:わかりましたので、思い通りに動作するようになりましたが、GL20のみを使用しています。ただし、アプリを実行できるデバイスを増やしたいので、可能であれば GL10 または GL11 を使用して問題を解決したいと考えています。
mfc - Windows モバイル (MFC)。アルファチャンネルを持つ画像を CImageList から CBitmap に変換するにはどうすればよいですか?
CBitmapButton をサブクラス化して、オーバーライドされた関数 DrawItem で独自のボタンを作成しました。これがそのコードで、動作します:
問題は、すべての画像が既に読み込まれ、CImageList に保存されていることです。そして、それらを変換する方法がわかりません。
CImageList の作成に問題がある可能性があります: m_LargeImg.Create(365, 85, ILC_COLOR32, 4, 0);
graphics - オフスクリーンアルファブレンディング
次の問題の解決策はありますか?2つのソース画像があります。どちらも同じサイズで、どちらも32ビット/ピクセル(カラーコンポーネントあたり8ビット、アルファチャネル(透明度)情報用に8ビット)のARGBピクセルの単純なメモリアレイとして保存されます。
ケース1:これら2つの画像(アルファブレンディングを使用)を宛先画像に描画しています。私は最初に画像#1を描き、次に画像#2を描きます。
ケース2:私が今達成したいのはこれです:画像#1と画像#2を次々に目的の画像に描画する代わりに、画像の組み合わせである新しい一時的な画像、画像#3を作成したいと思います#1と画像#2。画像#3を宛先画像に描画すると、上記のケース1で実行した操作とまったく同じ結果が得られます。
それは可能ですか?つまり、画像#1と#2から中間画像を作成します。これは、宛先画像に描画されたときに、画像#1と#2が次々に宛先画像に描画された場合とまったく同じ結果になりますか?可能であれば、どのようなアルゴリズムが必要ですか?正確な複製が不可能な場合、この操作を概算する方法はありますか?
ありがとう
編集:これをもう少し明確にするために:私は、ディスプレイへのアルファブレンディングが非常に高価である特別なハードウェアセットアップのために開発しています。そのため、これをできるだけ少ない呼び出しにまとめたいと思います。ケース1では、アルファブレンディングを2回実行する必要があります。最初の画像#1がデスティネーションサーフェスにブレンドされ、次に画像#2がデスティネーションサーフェスにブレンドされます。私の特定のハードウェア設定では、これは非常に高価です。そのため、最初に中間画像#3を作成してから、画像#3を目的のサーフェスにブレンドしたいと思います。このように、私は高価なブレンディングルーチンを一度だけ呼び出す必要があります。ですから、私の質問は、画像#1と#2からこの画像#3を作成して、結果がまったく同じになるようにすることができるかどうかということです。
opengl - OpenGLのディスプレイリストの色を変更するカスタム関数を設定できますか?
ジオメトリをディスプレイリストに保存していますが、同じディスプレイリストに異なる「色合い」を付けて描画できるようにしたいと思います。たとえば、ディスプレイリストに黒と白の頭蓋骨がある場合、赤の色合いを設定して頭蓋骨を描画し、次に青の色合いを設定して頭蓋骨を描画します。
RGBA値を取得できれば、それらを変換する方法は正確にわかりますが、どこでインターセプトできるかわかりません。現在、ディスプレイリストにはテクスチャが含まれていませんが、将来的には含まれる可能性があるため、テクスチャの有無にかかわらず回答が機能する場合は便利です。
iphone - iOS で glBlendFuncSeparate をより透明に
を使用してオフスクリーンフレームバッファに描画しています
を使用してこのフレームバッファを描画します
Mac、Windows、および OpenGL を使用する Linux ではすべて正常に動作しますが、OpenGL ES を使用する iOS では、結果として得られるフレームバッファーははるかに透明になります。
何が間違っている可能性があり、どうすれば修正できますか?
android - libGDX: パレットの最初の色を透明色として扱う
古いゲーム エンジンは、画像のパレットの最初の色を透明色として指定します。 libGDXで同じことをする方法はありますか?
画像を読み込んで、パレットの最初の色を 0x00000000 に置き換えてみました。ただし、ピクセルは不透明または透明であるため、アルファ値は必要ないため、RGBA8888 の代わりに RGB888 を使用することで多くのメモリを節約できます。他のブレンディング オプションについて gdx と opengl のドキュメントを調べたところ、Gdx.gl20.glBlendColor と SpriteBatch の setBlendFunction 関数が見つかりました。ただし、ブレンド方程式で使用される値のみが変更されます。
前もって感謝します :)
c# - このような色をブレンドするにはどうすればよいですか?
ゲーム「クルセイダーキングスII」に新しいキャラクターを改造するのに役立つツールを書いていますが、髪の毛やあごひげの色付けに少しこだわっています。
ゲームは次のようなテクスチャで始まります。
(出典:serayen.com)
次に、シャドウ、ベース、ハイライトの3色とブレンドします。
- ダーク:10、10、10
- ベース:125、85、56
- ハイライト:255、255、255
その結果、次のようになります。
(出典:serayen.com)
どんなブレンドを使っていますか?C#でそれを行うにはどうすればよいですか?
android - OpenGL transparent images have black in them
I am working on a game for Android and I was wondering why whenever I draw images with transparency there seems to always be some black added to the transparent parts. This happens all over and makes some of my effects look strange.
Here is an example. The two circles are only white images with a blur but you can see when one overlaps the other it has a shadow. If I overlap two of the circles say in Inkscape I get pure white where they overlap.
I am using
for my blending.
Any idea why this happens and how I can avoid it?
Edit: the only thing I can think of is that the two images have the same z so maybe they are blending only with the background instead of each other?
Edit: I changed
to
Here is the result I was looking for.
The only thing now is that the transparent images that I had that have a transparent black in them are ignored, which makes sense because I think the destination alpha is 1. Why would One minus source add that gray?