次の頂点シェーダー プログラムを使用して、単純な OpenGL 3 アプリを実行しようとしました。
in vec4 vPosition;
out vec2 otexcoord;
uniform mat4 modelview;
uniform mat4 projection;
void main()
{
gl_Position = projection * modelview * vPosition;
otexcoord.s = vPosition.x;
otexcoord.t = vPosition.y * -1.0;
};
このコードを別の会社の 3 つの GPU で実行しましたが、結果は異なります。
- インテルのドライバーではエラーもなく、問題なく動作しています。
- Nvidia のドライバーでは、「out can't be used with non-varying otexcoord」というエラーが表示されます。
- AMD のドライバーでは、エラーは「暗黙のバージョン番号 110 は GL3 前方互換コンテキストでサポートされていません」です。
AMDのものは最も目立たないようです。実際、私はそれについて何の考えも持っていません。
以下はクエリ文字列です
- インテル: OpenGL 3.2.0 - ビルド 9.17.10.2932 GLSL 1.50 - ビルド 9.17.10.2932
- Nvidia: Cg コンパイラ経由の OpenGL 3.2.0 GLSL 1.50 NVIDIA
- AMD: OpenGL 3.2.12002 コア プロファイル コンテキスト 9.12.0.0 GLSL 4.20
Intel と Nvidia は似ており、GLSL 1.50 コンパイラです。AMD は GLSL 4.20 です。
以下は質問です: -
- この場合、Intel と Nvidia のコンパイラのうち、どちらが正しく動作していますか?
- AMD のコンパイラからのエラー メッセージの本当の意味は何ですか? エラーを修正するには何が必要ですか。