私は、OpenGL バイナリ形式と、それらが実際に何を意味するかについて調べてきました。これまでのところ、私はあまり成功していません。次のように、フォーマットの数とセットを取得できることを知っています。
::glGetIntegerv(GL_PROGRAM_BINARY_FORMATS, &values[0]);
ここで、values は次のサイズの整数の std::vector です。
::glGetIntegerv(GL_NUM_PROGRAM_BINARY_FORMATS, &value);
私のマシンのドライバーの場合、これは単一のバイナリ形式を返します。それは単なる数字であり、そうでなければ私にはほとんど意味がありません。
だから私の質問は次のとおりです:
(1) フォーマット番号/コードは何を表していますか? (2) 標準の ARB バイナリ形式はありますか、それともすべてベンダー依存ですか? (3) ベンダー間で共通のフォーマットはありますか? (4) フォーマットが複数ある場合、どのように選択すればよいですか?
これを利用するには、特定のマシンでシェーダーをプリコンパイルしてキャッシュする必要があるという漠然とした感覚があります。つまり、DX とは異なり、シェーダー コンパイラをビルド後のイベントとして実行し、それらを一緒にパッケージ化して、D3D を備えた任意の (Windows) マシンで使用できます。