問題タブ [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.
c++ - OpenGL マルチテクスチャリング - glActiveTexture が NULL です
マルチテクスチャリングを使用したい新しいプロジェクトを開始しました。以前にマルチテクスチャリングを行ったことがあり、OpenGL のバージョンでサポートされています。
ヘッダーには次のものがあります。
コンストラクターには次のものがあります。
これは、「マルチテクスチャリングに失敗しました」というメッセージ ボックスを示し、glActiveTexture の内容は 0x00000000 です。
glActiveTexture( GL_TEXTURE0_ARB ) になったとき; アクセス違反エラーが発生する
私は MVC ダイアグラムを実装しているので、これはすべて地形ビュー クラスにあります。
opengl - マルチテクスチャはシーン全体を暗くします!
3つのクワッド、A、B、およびCを使用してシーンを実装しました。クワッドCはクワッドBの後ろにあります。クワッドBはクワッドAの上にあります。
クワッドBを除いて、すべてのクワッドは同じテクスチャを使用しています。クワッドBはアルファマップを使用し、他のすべてのクワッドが使用しているベーステクスチャを使用します。
以下のコードサンプルは、固定機能のマルチテクスチャリングを使用してQuadBを描画する方法です。
マルチテクスチャのアルファマップをクアッドBに適用すると、テクスチャのクワッドAとCの色が変わり、クアッドBよりも暗くなります。
GL_TEXTURE1への言及を削除すると、Quad Bでのアルファマッピングは失われますが、すべてがうまくレンダリングされ、調光は行われません。
推奨事項やヒントはありますか?glTexEnviの呼び出しに何か問題がありますか?
android - OpenGl es 2.0GLSLfragmentColor複数のテクスチャ
フレームをレンダリングしています。フラグメントの色は2つのテクスチャに基づいています。つまり、1つのパスでテクスチャの1つの値をインクリメントしたいのですが、1つのパスで2つのフレームバッファで1つのプログラムを実行できますか?
gl_fragmentColor1やgl_fragmentColor2と同様ですが、gl_fragmentColor2は2番目のフレームバッファーにバインドされていますか、それとも何らかの方法でsampler2dを使用してテクスチャに書き込むことができますか?現在、シェーダーに属性として渡されたカラー配列を使用しており、CPUで色の変化を計算していますが、魔女のテクスチャへのアプローチははるかに高速です。問題は、必要なときにピクセル値をデクリメントできないことです。
c++ - 各コーナーに独自のテクスチャを持つ三角形を描く方法は?
基本的に、三角形の各コーナーに 3 つのテクスチャを指定し、コーナーの glColor() で色が補間されるように、あるテクスチャから別のテクスチャに補間したいと考えています。
編集:これはテクスチャ コンバイナでは不可能と思われるため、シェーダで実行したいと考えています。
これは私が今持っているフラグメントシェーダーコードです:
glColor(); を使用しています。色 (1,0,0)、(0,1,0)、(0,0,1) を各三角形の角にプッシュし、色を読み取って、それに応じてどのテクスチャをどれだけブレンドする必要があるかを確認します.
問題は、頂点に色を使用できなくなったことです。そのため、フラグメントシェーダーにテクスチャをブレンドする方法を伝えるための最良のアプローチは何か、三角形の各コーナーで glColor() を使用していくつかを適用できることを尋ねています。着色?
Edit2:ブレンド比率を伝える 3D texcoord を送信することでなんとか機能させることができましたが、これが最善のアプローチですか? これについてもっとアイデアを聞きたいです。
opengl-es - 固定パイプライン opengl で A に RGB を使用する
はい、短い質問です: Opengl ES 1.1 (固定パイプライン) で、RGB コンポーネントのいずれかをアルファとして使用することは可能ですか?
GL_COMBINE では、RGB をアルファのソースとして使用することは許可されていないようです。
この制限が課される理由と、代替手段は何ですか? かなりのことを試しましたが、解決策を見つけることができません。
ios - 異なる UV 座標を持つ OpenGL ES 1 マルチテクスチャリング
マルチテクスチャリングを使用してオブジェクトをレンダリングする必要がありますが、同じオブジェクトに対して両方のテクスチャの UV 座標が異なります。1 つはノーマル マップで、もう 1 つはライト マップです。
これに関する有用な資料を提供してください。
iphone - マルチテクスチャ オブジェクトの後に拡散テクスチャを使用してオブジェクトを描画する方法
マルチテクスチャリングを使用して 1 つのオブジェクトを描画しています。それは問題ありませんが、その後拡散テクスチャのみを使用して他のオブジェクトを描画すると、その拡散テクスチャは前のテクスチャにバインドされます。デフォルト以外のテクスチャ ユニットを無効にする必要があり、GL_TEXTURE0 でアクティブなテクスチャ ユニットを作成する必要があることはわかっていますが、機能していません。
これが私のコードです
単純な拡散テクスチャの場合、テクスチャをバインドする前に記述しなければならないコマンドは何ですか?
他のサンプルコードは役に立ちます。
c++ - フラグメント シェーダーが使用するテクスチャを認識するために、テクスチャ ユニットを切り替える必要があるのはなぜですか?
私は簡単なテスト目的でこのプログラムを持っています。プログラムは 2 つの 1-D テクスチャを作成し、シェーダーに渡します。フラグメント シェーダーは非常に単純です。最初のテクスチャのインデックス 4 のテクセルを取り出し、そのテクセルをカラー フラグメントにします。
正方形を描いています。最初のテクスチャのインデックス 4 のテクセルには、赤色の <1.0, 0.0, 0.0, 1.0> が含まれています。したがって、上記のシェーダーの結果は赤い四角です。問題は、2 番目の 1-D テクスチャを作成してシェーダーに渡すときに発生します。なんらかの理由で、シェーダーが気に入らず、機能しなくなり、赤い正方形の代わりに黒い正方形が描画されます。C++ コードは次のとおりです (関数 "makeGLTexture" 内のコードは下にあります)。
テクスチャバインディングは関数「makeGLTexture」で行います。中のコードはこちら。
奇妙なことに、2 番目のテクスチャを作成した直後にアクティブなテクスチャ ユニットを最初のテクスチャのテクスチャ ユニットに切り替えると、プログラムが再び動作し、赤い四角が描画されます。
その後、プログラムは再び動作します。
私の質問は、なぜこれが起こっているのですか? シェーダはテクスチャユニットから独立していませんか? テクスチャ ユニットをサンプラー変数に渡すだけでいいのではないですか? この場合、シェーダーを再度実行するためにテクスチャ ユニットをテクスチャ ユニット ゼロに戻さなければならないのはなぜですか? 何が起こっている?
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()などをサポートしていません。
opengl - OpenGL:FBOにレンダリングするときにテクスチャコンバイナー関数がサポートされていますか?
最初のFBOにレンダリングされたOpenGLテクスチャがあり、その明るさを編集し、2番目のFBOにレンダリングしてから、画面に描画する必要があります。
テクスチャを(明るさを変更せずに)2番目のFBOにレンダリングしてから画面に描画すると、正しく表示されます。
レンダリングされたテクスチャの明るさを編集しようとすると(のようなテクスチャコンバイナ関数を使用してglTexEnv
)、すべて黒またはすべて白のテクスチャ、変更されたコントラストなどの間違った出力が得られます。
FBOの代わりに画面に描画しているときに明るさの調整を適用すると、うまく機能します。明るさは期待どおりに変更されます。
glTexEnv
だから私の質問は: FBOにレンダリングするときのようにテクスチャコンバイナー関数を使用できますか?
これは、FBOに描画するときに明るさを変更するために使用するコードです(機能しません)。