2

OpenGL の変換フィードバック機能を使用しようとしています。ミニマルな頂点シェーダーを作成し、それを使用してプログラムを作成しました (フラグメント シェーダーはありません)。glTransformFeedbackVaryingsまた、単一の出力変数名で を呼び出し、バッファ モードを に設定しましたGL_INTERLEAVED_ATTRIBS。シェーダー プログラムは正常にコンパイルおよびリンクされます (呼び出し後にリンクすることも確認しglTransformFeedbackVaryingsます。

を使用して単一の頂点属性配列を有効にglEnableVertexAttribArrayし、一般的な頂点属性に VBO を割り当て、属性の呼び出しをglVertexAttribPointer行いました。

生成した別のバッファーにバインドし、TRANSFORM_FEEDBACK_BUFFER変換フィードバック中に書き込むのに十分な大きさのデータ ストアを作成しました。

次に、変換フィードバックを有効にして を呼び出しますglDrawArrays(GL_POINTS, 0, 1000)。プログラムの実行中にクラッシュすることはありません。

問題は、変換フィードバックが呼び出しTRANSFORM_FEEDBACK_BUFFER中に に何かを書き込んでいるという兆候が得られないことです。glDrawArrays監視するクエリを設定する GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTENと、これは常に0を返します。何を試しても、変換フィードバックを取得して何も書き込めないようです(意味のあることは気にしないでください!)

何かを書くための変換フィードバックを得る方法や、確認すべきことについて何か提案があれば、教えてください!

注: トランスフォーム フィードバック オブジェクトは使用できず、頂点配列オブジェクトも使用していません。

4

1 に答える 1

2

問題は、私がどのように電話していたかだったと思いますglBindBufferBase。元の質問でこの関数呼び出しが表示されないことを考えると、完全に省略した可能性があります。

確かに、 もの前に正しいバッファ オブジェクトへのGL_TRANSFORM_FEEDBACK_BUFFER呼び出しにバインドする必要があることに気付きませんでした。glBindBuffercalling glBindBufferBase

于 2012-02-09T16:54:15.003 に答える