GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN всегда возвращает 0 - PullRequest
2 голосов
/ 08 февраля 2012

Я пытаюсь использовать функцию обратной связи преобразования в OpenGL.Я написал минималистичный вершинный шейдер и создал с ним программу (фрагментного шейдера нет).Я также сделал вызов glTransformFeedbackVaryings с одним переменным именем на выходе и установил режим буфера на GL_INTERLEAVED_ATTRIBS.Шейдерная программа прекрасно компилируется и связывается (я также проверяю, что я связываюсь после вызова glTransformFeedbackVaryings.

Я включил массив атрибутов одной вершины, используя glEnableVertexAttribArray, выделил VBO для общих атрибутов вершины ипозвонил glVertexAttribPointer для атрибута.

Я связал TRANSFORM_FEEDBACK_BUFFER с другим сгенерированным мной буфером и создал хранилище данных, которое должно быть достаточно большим, чтобы быть записанным во время преобразованияобратная связь.

Затем я включаю обратную связь преобразования и вызываю glDrawArrays(GL_POINTS, 0, 1000). Я не получаю никаких сбоев во время работы программы.

Проблема в том, что я не получаю никаких признаков того, чтообратная связь преобразования записывает что-либо в TRANSFORM_FEEDBACK_BUFFER во время вызова * 1017. * Я настроил запрос, который отслеживает GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, и он всегда возвращает 0. Независимо от того, что я пытаюсь, мне не удается получить обратную связь преобразованияПишите НИЧЕГО (не говоря уже о чем-то значимом!)

Если у кого-то есть какие-либо предложения относительно того, как я могу получить обратную связь для преобразования, чтобы написать что-нибудь или вещи, которыеt Я должен проверить, пожалуйста, дайте мне знать!

Примечание: я не могу использовать объекты обратной связи преобразования и не использую объекты массива вершин.

1 Ответ

2 голосов
/ 09 февраля 2012

Думаю, проблема заключалась в том, как я звонил glBindBufferBase.Учитывая то, что я не вижу этого вызова функции в исходном вопросе, возможно, я вообще его пропустил.

Конечно, я не осознавал, что GL_TRANSFORM_FEEDBACK_BUFFER также должен быть связан с вызовом glBindBuffer правильного буферного объекта до calling glBindBufferBase.

...