Direct3Dでは、プログラム内でパスを文字通り定義できるため、マルチパスシェーダーの使用は簡単です。OpenGLでは、シェーダープログラムに必要な数の頂点シェーダー、ジオメトリシェーダー、およびフラグメントシェーダーを与えることができるため、もう少し複雑に思えます。
マルチパスシェーダーの一般的な例は、トゥーンシェーダーです。1つのパスは実際のセルシェーディング効果を実行し、もう1つのパスはアウトラインを作成します。2つの頂点シェーダー「cel.vert」と「outline.vert」、および2つのフラグメントシェーダー「cel.frag」と「outline.frag」(HLSLで行う方法と同様)がある場合、どうすればよいですかそれらを組み合わせてフルトゥーンシェーダーを作成しますか?
マルチパスGLSLシェーダーの背後にある理論を知りたいだけなので、これにジオメトリシェーダーを使用できると言ってほしくありません;)