标签: transform-feedback

在没有帧缓冲的情况下转换反馈?

我有兴趣使用顶点着色器处理缓冲区而不产生任何渲染输出.这是相关的片段:

glUseProgram(program);

GLuint tfOutputBuffer;
glGenBuffers(1, &tfOutputBuffer);
glBindBuffer(GL_ARRAY_BUFFER, tfOutputBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(double)*4*3, NULL, GL_STATIC_READ);

glEnable(GL_RASTERIZER_DISCARD_EXT);

glBindBufferBase(GL_TRANSFORM_FEEDBACK_BUFFER, 0, tfOutputBuffer);
glBeginTransformFeedbackEXT(GL_TRIANGLES);

glBindBuffer(GL_ARRAY_BUFFER, positionBuffer);
glEnableVertexAttribArray(positionAttribute);
glVertexAttribPointer(positionAttribute, 4, GL_FLOAT, GL_FALSE, sizeof(double)*4, 0);

glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, elementBuffer);

glDrawElements(GL_TRIANGLES, 1, GL_UNSIGNED_INT, 0);
Run Code Online (Sandbox Code Playgroud)

这可以正常工作,直到glDrawElements()调用,这导致GL_INVALID_FRAMEBUFFER_OPERATION.并glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT);返回GL_FRAMEBUFFER_UNDEFINED.

我认为这是因为我的GL上下文没有默认的帧缓冲,我没有绑定另一个FBO.但是,因为我不关心渲染输出并且我已经启用了GL_RASTERIZER_DISCARD_EXT,所以我认为不应该使用帧缓冲.

那么,有没有一种方法可以在没有帧缓冲的情况下使用变换反馈,或者我是否需要生成并绑定帧缓冲,即使我不关心它的内容?

opengl transform-feedback

5
推荐指数
1
解决办法
371
查看次数

标签 统计

opengl ×1

transform-feedback ×1