私のゲームには、シェーダー、フレームバッファー、および描画を処理するレンダリング モジュールがあります。ここで、これら 3 つのタスクのロジックを個別にカプセル化したいと思います。アイデアは、レンダリング モジュールを 3 つのモジュールに分割することです。コードの複雑さを軽減し、ライブシェーダーのリロードを簡単に実装するためにこれを行いますが、私の質問にとっては重要ではありません。
描画モジュールは空のシェーダー オブジェクトを作成glCreateProgram()
し、それらをソース ファイルへのパスと共にグローバルに保存します。シェーダー モジュールはそれらをチェックし、ソース ファイルをロードしてコンパイルし、リンクすることで実際のシェーダーを作成します。
ただし、この概念では、レンダー モジュールが既に描画を望んでいるが、シェーダー モジュールが実際のシェーダーを作成していない場合が発生する可能性があります。私の質問は、空のシェーダー プログラムで描画することは有効ですか? これが発生したときに画面が黒くなることは、私にとってはまったく問題ありません。シェーダーの作成はすぐに準備が整うはずなので、遅れは気にならないかもしれません。
空のシェーダー プログラムで描画することは有効ですか? 他の場所にロードされたシェーダーのアイデアを実装するにはどうすればよいですか?