質問

にアクセスする必要があります 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() 機能。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top