3

単純なプログラムでglDrawArraysが呼び出されたときに(gdbが言うように)セグメンテーション違反の原因を見つけようとしています。

OpenGl呼び出しを直接使用すると、プログラムは正常に実行されます。しかし、それらを2つのクラス(作成中、vaoとvbo)にまとめると、プログラムはsegfaultsになります。

だから、私のラッパーでは、私は間違いなく何かを無効にするか、私がしてはいけない何かを設定しました。

私の質問は、問題の原因を特定するのに役立つ診断を取得するにはどうすればよいですか?

glGetShaderivと同様の機能を探していますが、vaoとvboの場合は、誤ってバッファをバインド解除したかどうかがわかります。

[ここにコードを投稿していませんが、segfaultingの例をテストして寄付したい場合は、ソースのtar.gzをここに示します。sfml-2.0rc、glew、gcc>=4.6の動作するライブラリが必要です。]

4

2 に答える 2

4

GDEBuggerのようなプログラムを試してみてください:http ://www.gremedy.com/

これにより、OpenGLの状態を簡単に確認し、優れた診断を行うことができます。

于 2012-06-22T01:36:08.580 に答える
2

glVertexAttribPointerを呼び出すときは、VBOデータを割り当てる必要があります。ただし、後で呼び出すため、以前に呼び出されたglVertexAttribPointerは、VAOに無効な場所を指すように指示します。つまり、描画中にクラッシュします。

コメントセクションでコードをどのように呼び出しているかを確認してください。最初はglBufferData、次にglVertexAttribPointerです。

于 2012-06-22T03:12:12.667 に答える