Cg シェーダー プログラムでOpenGL 状態変数(MVP マトリックスなど)にアクセスする必要があります。cgGLSetStateMatrixParameter()
これらの値は、C/C++ コードなどの呼び出しを使用して手動で Cg シェーダー プログラムに渡しています。これを行う簡単な方法はありますか?
2166 次
1 に答える
4
かなり最近の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
状態変数の完全なリストについては、Cg ユーザーズ マニュアルの「 OpenGL 状態へのアクセス、OpenGL ARB Vertex プログラム プロファイル (arbvp1)」セクションを参照してください。
ノート:
- すべての OpenGL 状態変数は、 Cgでアクセスする場合、同じ型です。
- ライト変数の場合、インデックスは必須です。(例: state.light[1].ambient の 1 )
- Cg 内の対応するライト値を使用するために、1 つまたは複数のライティングを有効にする必要はありません。ただし、 glLight()関数を使用して設定する必要があります。
于 2008-08-18T09:11:13.117 に答える