問題タブ [multitexturing]

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 投票する
1 に答える
394 参照

c++ - フラグメント シェーダーが使用するテクスチャを認識するために、テクスチャ ユニットを切り替える必要があるのはなぜですか?

私は簡単なテスト目的でこのプログラムを持っています。プログラムは 2 つの 1-D テクスチャを作成し、シェーダーに渡します。フラグメント シェーダーは非常に単純です。最初のテクスチャのインデックス 4 のテクセルを取り出し、そのテクセルをカラー フラグメントにします。

正方形を描いています。最初のテクスチャのインデックス 4 のテクセルには、赤色の <1.0, 0.0, 0.0, 1.0> が含まれています。したがって、上記のシェーダーの結果は赤い四角です。問題は、2 番目の 1-D テクスチャを作成してシェーダーに渡すときに発生します。なんらかの理由で、シェーダーが気に入らず、機能しなくなり、赤い正方形の代わりに黒い正方形が描画されます。C++ コードは次のとおりです (関数 "makeGLTexture" 内のコードは下にあります)。

テクスチャバインディングは関数「makeGLTexture」で行います。中のコードはこちら。

奇妙なことに、2 番目のテクスチャを作成した直後にアクティブなテクスチャ ユニットを最初のテクスチャのテクスチャ ユニットに切り替えると、プログラムが再び動作し、赤い四角が描画されます。

その後、プログラムは再び動作します。

私の質問は、なぜこれが起こっているのですか? シェーダはテクスチャユニットから独立していませんか? テクスチャ ユニットをサンプラー変数に渡すだけでいいのではないですか? この場合、シェーダーを再度実行するためにテクスチャ ユニットをテクスチャ ユニット ゼロに戻さなければならないのはなぜですか? 何が起こっている?

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

opengl-es - OpenGL、GL_MODULATEおよびマルチテクスチャリング

マルチテクスチャポリゴンの描画に成功しましたが、残念ながら、オーバーレイテクスチャの最初のピクセルのみがテクスチャ領域全体で使用されています。

テクスチャ(GL_TEXTURE0およびGL_TEXTURE1)は次のとおりです。

アイコン かぶせる

結果は次のとおりです。

結果

上部の赤いピクセルのみが使用されています。上部の1x1の青いピクセルだけで試しましたが、青いオーバーレイでも同じ結果が得られます。

私のコード:

これはOpenGLの問題ですが、iOSプロジェクトは、興味のある方はこちらから入手できます:http: //dl.dropbox.com/u/33811812/cocos2d/OpenGLTest.zip

編集: レッドブックから:

マルチテクスチャリングを行っていて、glTexCoord *()を使用している場合は、最初のテクスチャユニットのテクスチャ座標を設定しています。つまり、glTexCoord *()を使用することは、glMultiTexCoord *(GL_TEXTURE0、...)を使用することと同じです。

座標の配列を渡す方法に関するヒントはありますか?OpenGL ES 1.1はglBegin()などをサポートしていません。

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

opengl - OpenGL:FBOにレンダリングするときにテクスチャコンバイナー関数がサポートされていますか?

最初のFBOにレンダリングされたOpenGLテクスチャがあり、その明るさを編集し、2番目のFBOにレンダリングしてから、画面に描画する必要があります。

テクスチャを(明るさを変更せずに)2番目のFBOにレンダリングしてから画面に描画すると、正しく表示されます。

レンダリングされたテクスチャの明るさを編集しようとすると(のようなテクスチャコンバイナ関数を使用してglTexEnv)、すべて黒またはすべて白のテクスチャ、変更されたコントラストなどの間違った出力が得られます。

FBOの代わりに画面に描画しているときに明るさの調整を適用すると、うまく機能します。明るさは期待どおりに変更されます。

glTexEnvだから私の質問は: FBOにレンダリングするときのようにテクスチャコンバイナー関数を使用できますか?

これは、FBOに描画するときに明るさを変更するために使用するコードです(機能しません)。

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

opengl - OpenGLはすべてのテクスチャステージの出力をクランプしますか?

OpenGL 1.4固定機能マルチテクスチャを使用する場合、次のステージに渡される前に、すべてのテクスチャステージの出力が[0、1]にクランプされますか?

仕様によると(153ページ):

TEXTURE_ENV_MODEの値がCOMBINEの場合、テクスチャ関数の形式は、表3.24に従って、COMBINE_RGBとCOMBINE_ALPHAの値によって異なります。次に、テクスチャ関数のRGBとALPHAの結果に、それぞれRGB_SCALEとALPHA_SCALEの値を掛けます。結果は[0、1]にクランプされます。

しかし、私のテストでは、それは起こりませんでした。RGBコンポーネントのテクスチャ環境は次のとおりです。

  • ステージ1:GL_TEXTUREからGL_CONSTANTを減算します。ここで、テクスチャ全体は黒で、GL_CONSTANTの色は(.5, .5, .5, 1.0)
  • ステージ2:GL_TEXTUREをGL_PREVIOUSに追加します。ここで、テクスチャはテストレインボーです。

ステージ1のGL_CONSTANTカラーを明るくすると、出力が目に見えて暗くなります。

期待するクランプを実現するために有効にできる状態はありますか?

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

opengl - OpenGL の GPU でテクスチャ データにアクセスするにはどうすればよいですか?

GPU でテクスチャ データにアクセスする方法がよくわかりません。可能であれば、誰でもこれらを説明できますか?

  1. テクスチャ ユニットの数が制限されている場合、 を使用して生成しglGenTextures()、GPU にアップロードできるテクスチャの数は制限されglTexImage2D()ますか? それとも、 を使用してバインドできるテクスチャ ユニットの数のみを制限しglBindTexture()ますか?

  2. 私が本当にやりたいことは、すべてのテクスチャを GPU にアップロードできるようにすることです。たとえ利用可能なテクスチャ ユニットの数よりも多い場合でもです。テクスチャが必要な場合は、 を使用してテクスチャ ユニットにバインドしglBindTexture()ます。これは可能ですか?

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

ios - GLSL を使用してアルファ ブレンディングなしで 2 つのテクスチャを結合する方法

OpenGL es 2.0 でシェーダーを使用して 2 つのテクスチャを結合しようとしています。

ここに画像の説明を入力

スクリーンショットでわかるように、動的環境マッピングを使用して後方オブジェクトに針の反射を作成しようとしています。しかし、針の反射は半透明に見え、環境マップとブレンドされています。

これが私のフラグメントシェーダーです。

しかし、"mix" メソッドは 2 つのテクスチャをブレンドします。

Texture Combinersの例も確認しましたが、どちらも役に立ちませんでした。

互いにブレンドせずに 2 つのテクスチャを組み合わせる方法はありますか。

ありがとう。

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

android - LibGDX SpriteBatchマルチテクスチャは可能ですか?

LibGDXフレームワークのSpriteBatchクラスをうまく使用しています。私の目的は、シェーダーを介してスプライトの表現を変更することです。

SpriteBatchクラスからデフォルトのシェーダーをコピーし、別の均一なサンプラー2dを追加しました

シェーダーにテクスチャを与えるための実用的な方法はありますか?このようにすると、常にClearColor画面になります。

各テクスチャだけが機能しています。メッシュクラスを使用して手動で描画すると、期待どおりに機能します。では、SpriteBatchの便利さを利用するにはどうすればよいですか?

ヘルプのためのTHX

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

opengl - OpenGL モデリング

Collada 形式から独自のカスタム形式に変換できるプログラムを作成しようとしています (この部分は簡単で制御可能です)。私がやりたいことは次のとおりです。

1.) Collada ファイルから解析された正確なデータを使用して、モデルを描画する方法を見つけます。a.) 単純な立方体は 8 つの頂点、36 の法線、および 12 のテクスチャ座標を生成します。これは検索ですが、OpenGL でこれを描画する唯一の方法は、法線の量と一致するように頂点と法線のデータを複製する必要があります。 .

2.) マルチテクスチャリングを実装する方法を見つけます。a.) これに関するチュートリアルをたくさん見つけましたが、実際にこれを使用する方法が見つからないようです。これらの機能は私のバージョンのopenGLに組み込まれていないようで(2台のコンピューターでこれを試しました)、欠落している可能性のある必要なdllを誰も文書化していません。

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

android - Androidでopen gl es 1.1を使用してマルチテクスチャリングを行う方法

私がやった事

現在、私の Android アプリでは、2 つの異なるテクスチャで四角形を描画しています
。1 つのテクスチャ (2 番目のテクスチャ) のフェードイン (アルファを変更) アニメーションが提供されています。

私が欲しいもの。

マルチテクスチャリングを使用したいので、両方のテクスチャを単一の長方形に描画します。しかし、Android でのマルチ テクスチャリングに opengl es 1.1 を使用するための助けになるものを見つけることができません。

マルチテクスチャリングを行うのを手伝ってください

これが私のコードです

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

android - Android OPEN GL ES マルチテクスチャリングは何も描画しません

私はこの OpenGL ES に慣れていません。マルチテクスチャリングを使用して四角形を描画しようとしていますが、何が問題なのかわかりません。どんな提案やアイデアも私にとって非常に役に立ちます。

これが私のコードです:

私が行ったことは、ネット上で見つかったいくつかのコードをまとめることですが、まだ結果を得ることができませんでした。テクスチャの異なる 2 つの四角形を描画するなど、2 つのパスでこれを描画でき、目的の結果が得られました。

私はいくつかを使用しGL11GL10組み合わせたのはこれが失敗である可能性があります. :PI 正しいかどうかはわかりません。一部の定数は を使用してサポートされていないため、これを行いGL10ました。

これは私のために働くコードですが、これの代わりにマルチテクスチャリングを使用したいです: