Cg での OpenGL 状態変数へのアクセス
質問
にアクセスする必要があります OpenGL 状態変数 (MVP マトリックスなど) Cg シェーダー プログラムにあります。次のような呼び出しを使用して、これらの値を Cg シェーダ プログラムに手動で渡しています。 cgGLSetStateMatrixParameter()
私のC/C++コードでは。もっと簡単な方法はありますか?
解決
かなり最近のものを使用している場合 CGプロフィール (arbvp1 以降)、Cg シェーダ プログラムは実際に OpenGL 状態 (MVP マトリックス、マテリアル、ライト設定) に直接アクセスできます。これにより、これらのプログラムを作成する苦痛が軽減されます。
アクセスできる状態変数の一部を次に示します。
すべてのタイプの MVP マトリックス:
state.matrix.mvp
state.matrix.inverse.mvp
state.matrix.modelview
state.matrix.inverse.modelview
state.matrix.modelview.invtrans
state.matrix.projection
state.matrix.inverse.projection
光と材料の特性:
state.material.ambient
state.material.diffuse
state.material.specular
state.light[0].ambient
状態変数の完全なリストについては、セクションを参照してください。 OpenGL 状態、OpenGL ARB Vertex プログラム プロファイル (arbvp1) へのアクセス の中に CG ユーザーマニュアル.
注記:
- すべての OpenGL 状態変数は次のとおりです。 ユニフォーム Cg でアクセスしたときのタイプ。
- のために ライト 変数、 索引 必須です。(例えば:1インチ state.light[1].ambient)
- Cg 内で対応するライト値を使用するために、ライティングを有効にする必要はありません。ただし、次を使用して設定する必要があります。 glLight() 機能。
所属していません StackOverflow