私は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を返します。何を試しても、何も書かないようにトランスフォームのフィードバックを得ることはできません(何も意味のあることは気にしないでください)
誰にでもどのように私は何かを書くために変換のフィードバックを得ることができますか、私が確認してください私に知らせてください!
注:私は変換フィードバックオブジェクトを使用できません。私は頂点配列オブジェクトを使用していません。
あなたのアルゴリズムは問題ありません。おそらくコードにバグがあります。あなたのコードを実際に見ることなく、告げる方法はありません。 –
助けてくれてありがとう、私は、可能な限り数行のコードでトランスフォームのフィードバックを使った簡単な.cppファイルを書いた後、適切なアプリケーションのステップに戻って、どのように 'glBindBufferBase'を使っていたのかを指摘しました他のものを試してみる)。クエリが期待値を返しているので、私は戻ってきていると思います!再度、感謝します! –