4

ユーザーがいくつかのものをより速くレンダリングするために作成したシェーダーをサポートしていない場合は、フォールバックを作成する必要があります。

では、これらのことを正確に確認するにはどうすればよいでしょうか。一部のシェーダー関数が一部の GLSL バージョンでサポートされていないことは知っていますが、これらの関数と必要なバージョンの完全なリストはどこにありますか?

しかし、問題は、誰がそのシェーダーをレンダリングできるかを知るために、正確に何を知る必要があるのか​​ わからないことです. どのGLSLバージョンでどの機能がサポートされているかを確認するだけですか?それとももっと知っておくべきことがありますか?いつフォールバック レンダリングに切り替えるか、いつ GLSL レンダリングを使用するかを100%確実にしたいと考えています。

GLSL と OpenGL のバージョン文字列を取得する方法を知っています。

4

2 に答える 2

5

GL エラー状態を設定する場合glLinkProgram、シェーダはカードと互換性がありません。

于 2011-05-20T13:42:39.023 に答える
1

を呼び出した後、以下を使用してリンク ステータスglLinkProgramを確認することをお勧めします。

glGetProgramiv(program, GL_LINK_STATUS, &linkStatus);

これにより、プログラムが正常にリンクされたかどうかを示すブール値が得られます。もご用意しておりGL_COMPILE_STATUSます。

ほとんどの場合、これは、プログラムがプラットフォームでコンパイルまたはリンクに失敗したかどうかを示します。

ただし、プログラムは問題なくリンクしても、ハードウェアでの実行に適していない場合があることに注意してください。この場合、GL レンダリングはソフトウェア レンダリングにフォールバックし、遅く遅く遅くなります。

この場合、運が良ければ、このリンク ログにメッセージが表示されますが、このメッセージはプラットフォームに依存します。

于 2011-05-22T21:11:39.913 に答える