それが無意味である限り、それは悪い考えです。オルソ射影行列(いずれにせよ行う必要がある)を除いて、まだ設定していないことはありません。
移植性は問題ではありませんが、おそらく問題ではありません。IHVは近い将来、即時モードのサポートを中止することを非常に躊躇しているようです(コアプロファイルでも「正常に動作する」ように思われます)。したがって、即時モードはずっと前に消滅していたはずですが、おそらく永久にとどまります。パフォーマンスは別の話です。シーンの複雑さの0.1%を占めてCPU時間の15-20%を消費するものを本当に望んでいますか?GL呼び出しは、DXなどと比較して比較的軽量ですが、無料ではありません-15-20%リアルパイプラインの停止によるフレーム時間?あなたはあなたの時間予算でそれを買う余裕さえありますか?ほとんどのゲームはできません。
そして、もちろん、癖です。気まぐれです。イミディエイトモードの明らかな美しさは、いくつかの四角形をすばやく描画するような操作を(一見すると)簡単かつ簡単に行えることです。実際には、即時モードは後部のそのような苦痛である可能性があります、それはそれほど明白でない落とし穴でいっぱいです。
一方、DrawQuad
呼び出されたときに頂点座標とインデックスをメモリバッファーに追加し、カウンターをインクリメントする小さな5-LOC関数を記述するだけで、簡単に(そして私に尋ねればより簡単です!)驚いたことに、glDrawArrays/Elements
次のフレームは何も変更しない限り、次のフレームをそのまま使用して描画し、再利用できます(ユーザーランドコピーだけでなく、GPUコピー!)。
即時モードでは、他に方法はなく、毎回バッファを割り当ててPCIe転送を行う必要があります。または、同等のレイテンシ(GPUがバスを介してメインメモリを読み取るなど)。ドライバーは、データが以前のフレームとまったく同じままであることをおそらく知る(または想定する)ことができません。
GPUへのデータの取得は高速ですが、待ち時間も長くなります。バス転送自体が複雑で待ち時間の長いプロトコル(複数のプロトコルレイヤー、パケット化、確認応答など)であるだけでなく、すべてのGPUが同時に転送して描画することさえできない場合、または可能であれば、別のことをしている間、いつでも自由に切り替えたり、新しい操作を開始したりできない場合があります。次のように読んでください:むやみに転送しないでください。