1

これは本当に奇妙な質問です。

GLEW と GLFW を使用するプログラムで実行されている単一の均一な vec4 を持つ非常に単純なシェーダーがあります。このプログラムは、私がプログラムを実行した nVidia グラフィックス カードを搭載した複数のマシンで問題なく動作します。

問題は、インテル グラフィックス 3000 チップ (ターゲットとしているバージョンの OpenGL 3.1 をサポートする) を搭載したラップトップに切り替えると、均一な変数 (glProgramUniform4f、glProgramUniformMatrix4fv、その他すべて) の値を設定しようとする関数呼び出しが発生することです。 )、アクセス違反でゲームがクラッシュします。

さらに (これが直接の問題ではないことはわかっていますが、解決策に関係しているのではないかと思います)、nVidia マシンで glGetUniformLocation を呼び出すと小さい値が返されますが、Intel マシンで同じ呼び出しを行うと大きな値が返されます ( > 6桁)の値。

コードを投稿しますが、何が役立つのか正確にはわかりません。解決策が思い浮かびませんが、どのような種類のコードを投稿する必要があるかについてのアイデアがある場合は、お知らせください。喜んでお手伝いさせていただきます。

ありがとうございました!

4

1 に答える 1

0

愚かな私!

glProgramUniform... メソッドは OpenGL 4.x でのみ使用でき、3.1 では使用できません。

これを回避するために、変更したいプログラムがバインドされていることを確認し、代わりに対応する glUniform... メソッドを使用しました。

于 2013-05-10T22:30:41.640 に答える