Hallo zusammen,
ich habe das Problem, dass bei meinem Programm Transform-Feedback nicht funktioniert. Mit AMD's CodeXL konnte ich herausfinden, dass beim Transform-Feedback keine Daten in den Transform-Feedback-Buffer geschrieben werden. Am Geometry-Shader sollte es nicht liegen, da die Query die korrekte Anzahl an Primitven ermittelt (auch wenn ich den Shader verändere).
Hier der Quellcode
Vielen Dank,
MrGameDev
ich habe das Problem, dass bei meinem Programm Transform-Feedback nicht funktioniert. Mit AMD's CodeXL konnte ich herausfinden, dass beim Transform-Feedback keine Daten in den Transform-Feedback-Buffer geschrieben werden. Am Geometry-Shader sollte es nicht liegen, da die Query die korrekte Anzahl an Primitven ermittelt (auch wenn ich den Shader verändere).
Hier der Quellcode
Code:
glUseProgram(m_constructionProgram);
GLuint query;
glGenQueries(1, &query);
// Perform transform feedback
glEnable(GL_RASTERIZER_DISCARD);
glBindBuffer(GL_ARRAY_BUFFER, m_vbo[0]);
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, m_vbo[1]);
glBeginQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN, query);
glBeginTransformFeedback(GL_TRIANGLES); //writes to transform_feedback_buffer
glDrawArrays(GL_TRIANGLES, 0, m_vertexCount); //takes input from array buffer
glEndTransformFeedback();
glEndQuery(GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN);
//swap vbo and tbo (vertex_buffer gets generated data from feedback_buffer)
std::swap(m_vbo[0], m_vbo[1]);
// Fetch and print results
GLuint primitiveCount;
glGetQueryObjectuiv(query, GL_QUERY_RESULT, &primitiveCount);
m_vertexCount = primitiveCount * 3;
glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, 0); //unbind
glDisable(GL_RASTERIZER_DISCARD);
Vielen Dank,
MrGameDev