シーンにいくつかのオブジェクトがあります。シェーダーをそのうちの1つだけに適用したいと思います。環境:OpenGL 2.0、C ++、GLUT、GLEW。
2 に答える
シェーダープログラムは、インストールされている間のみ有効です。プログラムのインストール中に行う描画呼び出しのみがシェーダーを使用します。シェーダーをインストールし、オブジェクトを描画してから、シェーダーをアンインストールする必要があります。
編集:シェーダーを「インストール」するということglUseProgram
は、シェーダーのハンドルで使用することを意味します。「アンインストール」とは、別のシェーダーをインストールするかglUseProgram
、引数を付けて呼び出すことを意味します0
。glUseProgramを参照してください。私の「インストール/アンインストール」という用語はそこから来ています。
drawcallで、そのシェーダーを使用してそのオブジェクトを描画し、それを使用せずに他のオブジェクトを描画します。これ以上単純なものはありません; Pオブジェクトクラスで列挙型を使用して、そのオブジェクトに対して有効になっているシェーダーを指定できます。それらが想定されている場合にのみ、そのシェーダーを通過します。もちろん、フルスクリーンピクセルシェーダーの場合は、すべてのピクセルを処理し、表示する新しい画像をレンダリングするため、問題が発生します。オブジェクトをパラメータとして渡す方法と、そのオブジェクトの場所でのみ変更を適用するアルゴリズムがない限り。