シェーダでOpenGL glTexEnvの動作を模倣しようとしています。それはかなり複雑な機能ですが、実行可能でなければなりません。唯一の問題は、テクスチャベースの内部形式によって機能が異なることです。どのようにしてその情報をテクスチャから得ることができますか?テクスチャベースの内部フォーマットはglTexImage2D関数で与えられていますので、そこにいくつかの変数を保存して、バインドされたテクスチャに応じていくつかのユニフォームでシェーダに渡す必要がありますか、どういうわけかOpenGLで取得できますか?シェーダへのOpenGLテクスチャベース内部フォーマット
答えて
テクスチャのブレンド値は、組み込みの制服の一部ではないようです。
- 一つの大きなシェーダ、シェーダに値を渡す...
- 作成シェーダ、それぞれの行動や内部形式のため:
http://www.opengl.org/sdk/libs/OpenSceneGraph/glsl_quickref.pdf
は、一般的に模倣FFPの行動のための2つの方法があります例えば、必要に応じて動的に変更することができる。
私は2番目の方法が好きです。なぜなら、1つの大きくて遅いallroundシェーダにならないからです。 その代わりに、小さな特定のシェーダが得られます。
さらに、この一般的な問題は「組み合わせシェーダー爆発」問題として知られています。
実際には、1つのシェーダで何かを実装することはできません。テクスチャユニット0のTEXTURE_3DとTEXTURE_2Dターゲットが有効になっているとします。固定関数仕様では、3Dテクスチャがサンプリングされるとしています。プログラム可能なパイプラインは、どのサンプラーが使用されているかに基づいてサンプリングされるものをシェーダーが決定すると言います。つまり、テクスチャターゲットの組み合わせごとに特定のシェーダを構築する必要があります。 1D/2D/3D /立方体、8つのテクスチャユニットでは、すでに64Kのシェーダの可能性を与えています... – Bahbar
いいえ、テクスチャベース内部フォーマットはシェーダで直接利用できません。自分で保存したくない場合は、常にGLにその値を渡してシェーダに渡すように依頼することができます。
glGetTexLevelParameteriv(GL_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &outFormat)`
- 1. シェーダなしのOpenGL ESへのPhotoshopブレンドモード
- 2. OpenGLシェーダのパフォーマンスプロファイリング
- 3. OpenGLシェーダ対CUDA
- 4. OpenGL ESとOpenGL互換シェーダ
- 5. fragシェーダのOpenGLカラーインデックス?
- 6. OpenGL GL_BGRがテクスチャ内部フォーマットでは機能しない
- 7. OpenGL:シェーダのあるライン
- 8. Android用のシェーダOpenGL ES
- 9. OpenGLシェーダのパイプラインの深さの計算
- 10. OpenGLシェーダのコンパイルに失敗する
- 11. OpenGLプログラム/シェーダの初期化解除
- 12. OpenGLシェーダの色が「消える」
- 13. 外部フォーマットを内部フォーマットに変換する
- 14. フレームバッファとOpenGLでシェーダを使用する
- 15. OpenGL ES 2.0シェーダで滑らかなテクスチャライン
- 16. 透視投影OpenGLと計算シェーダ
- 17. OpenGLシェーダを使用したガウスフィルタ
- 18. OpenGLプログラムにシェーダを添付する
- 19. OpenGL HQXシェーダをLibGDXに変換する
- 20. NativeActivityでOpenGLシェーダを作成する
- 21. OpenGL-ESへのOpenGL - glBegin();
- 22. 内部Vrsサブリポジトリへの外部パス
- 23. 内部インデックスへの参照?
- 24. 内部クラスへのアクセス
- 25. 内部ソースへのハイパーリンクボタン
- 26. OpenGLでのシェーダの変換行列の計算方法
- 27. 内部ベンダーのXMLスキーマへの内部データ要素のマッピング
- 28. OpenGLシェーダのコンパイルの問題 - 予期しないEOF
- 29. OpenCLとOpenGLの計算シェーダの違いは何ですか?
- 30. OpenGLの頂点シェーダ変換して出力
内部フォーマットはどのようにシェーダに影響しますか? – Luca
@ルーカ例えば1つのチャンネルしか持たないテクスチャがあるかもしれません(32ビットでエンコードされた赤の値を言いましょう)。シェーダーが少なくとも2つのチャンネル(赤と緑など)を予期している場合、1チャンネルのテクスチャを提供する際に問題が発生する可能性があります。 – wil