9

私たち全員が最終的に知るようになると、仕様は1つであり、実装は別のものです。ほとんどのバグは私たち自身が引き起こしますが、そうでない場合もあります。

以下の小さなリストを作成すると便利だと思います。

OpenGLおよびGLSLの最近のバージョンの実装に関連して、GPUドライバーで現在知られているバグは何ですか?

関連するグラフィックカードドライバのバージョンを常に投稿することを忘れないでください。

4

2 に答える 2

2

始めましょう:

  • GPU:AMD / ATI RadeonHD4650で確認済み
  • タイプ:GLSL問題
  • 関連するGLバージョン:3.3、おそらく3.1以降(またはそれ以前)で確認済み
  • 関連リンク: http: //forums.amd.com/devforum/messageview.cfm?catid = 392&threadid = 139288
  • ドライバーバージョン:Catalyst 10.10で確認済み(2010年9月28日)
  • ステータス:2010-11-27の時点で修正がありますが、まだ公開ドライバーリリースに到達していません(したがって、修正がリリースされたとしても、それほど最近ではないバージョンのドライバーを使用しているユーザーは引き続き影響を受けます。数ヶ月のように)
  • 説明:

頂点シェーダーに、名前が字句的にの後に続くattribute( )変数がある場合、組み込み属性、つまりとを使用することはできません。試してみると、シェーダーは機能しません(空白の画面である可能性があります)。ingl_gl_VertexIDgl_InstanceID

  • 回避策(新規):

GLSL 3.3以降、またはGL_ARB_explicit_attrib_location拡張機能でのみ使用できます。

layout(location=0)頂点シェーダーでの宣言に追加することにより、属性の位置を明示的に0に等しくなるように定義します。他の属性にこれを使用することはできますが、使用する必要はありません。重要なことは、すべての属性の位置が0に等しい必要があるということです。これを行うと、名前付けは重要ではなくなります。

  • 回避策(代替):

命名規則を使用して、属性変数に.で始まる名前を付ける必要があります。a_これにより、コードの可読性が損なわれることはなく、すべての変数が字句的に前になりますgl_(セーフゾーン)。

于 2010-11-27T14:29:32.017 に答える
1

もう1つのgl_VertexIDバグ:

  • GPU:NVIDIA GeForce 9400M
  • タイプ:GLSL問題
  • ドライバーバージョン:NVDANV50Hal 1.6.36
  • OpenGLバージョン:2.1、GL_EXT_gpu_shader4拡張機能を使用したGLSL 1.2

これはMacbookで発生します。OS XLionに付属するOpenGL3.2を有効にする新しいドライバーで問題が修正された可能性がありますが、多くのフレームワークはレガシー2.1ドライバーのみを使用するように構成されているため、これは依然として関連性があります。

頂点シェーダーで別の属性を読み取る前にgl_VertexIDを読み取ると、後者の属性はジャンクデータを返します。他の属性がgl_Colorの場合、使用方法に関係なく、何もレンダリングされません。他の組み込み属性にアクセスすると、他の奇妙な動作が発生する可能性があります。

  • 回避策:

gl_VertexIDを使用する必要がある場合は、最初に必要になる他のすべての属性を読み取ります。最初に別の属性を読み取り、次にgl_VertexIDを読み取ると、その後の属性の読み取りはすべて正常に機能します。

于 2012-05-18T07:32:52.177 に答える