2012-02-08 19 views
2

私はOpenGLの変換フィードバック機能を使用しようとしています。私は最小限の頂点シェーダを作成し、それを使ってプログラムを作成しました(フラグメントシェーダはありません)。私もglTransformFeedbackVaryingsに1つの出力の名前を変更して呼び出しました。バッファモードをGL_INTERLEAVED_ATTRIBSに設定しました。シェーダプログラムをコンパイルし、(私も、私はglTransformFeedbackVaryingsコールの後にリンクしてください罰金リンクします。GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTENは常に0を返します

私は、一般的な頂点属性のVBOを割り当てられ、ためglVertexAttribPointerに電話をかけた、glEnableVertexAttribArrayを使用して、単一の頂点ATTRIB配列を有効にしています属性。

は私が生成した別のバッファへTRANSFORM_FEEDBACK_BUFFERを結合させ、十分な大きさたっぷりの間にフィードバックを変換するために書き込まれるようにする必要があり、データストアを作成しました。

私は、その後のフィードバックを変換可能にし、 glDrawArrays(GL_POINTS, 0, 1000)を呼び出してください。プログラムの実行中にクラッシュすることはありません。

問題は、glDrawArraysコール中にトランスフォームのフィードバックが何も書き込まれていないということです。この問題は、TRANSFORM_FEEDBACK_BUFFERに何も書き込まれていないということです。私はGL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTENを監視するクエリを設定し、これは常に0を返します。何を試しても、何も書かないようにトランスフォームのフィードバックを得ることはできません(何も意味のあることは気にしないでください)

誰にでもどのように私は何かを書くために変換のフィードバックを得ることができますか、私が確認してください私に知らせてください!

注:私は変換フィードバックオブジェクトを使用できません。私は頂点配列オブジェクトを使用していません。

+1

あなたのアルゴリズムは問題ありません。おそらくコードにバグがあります。あなたのコードを実際に見ることなく、告げる方法はありません。 –

+0

助けてくれてありがとう、私は、可能な限り数行のコードでトランスフォームのフィードバックを使った簡単な.cppファイルを書いた後、適切なアプリケーションのステップに戻って、どのように 'glBindBufferBase'を使っていたのかを指摘しました他のものを試してみる)。クエリが期待値を返しているので、私は戻ってきていると思います!再度、感謝します! –

答えて

2

問題は、私が電話していた方法で終わったと思う。glBindBufferBase。元の質問でこの関数呼び出しを見ることができないことを考えれば、私はそれを省略したかもしれません。

GL_TRANSFORM_FEEDBACK_BUFFERも、calling glBindBufferBaseより前に正しいバッファオブジェクトにglBindBufferを呼び出してバインドする必要があることを認識していませんでした。

関連する問題