QOpenGLFramebufferObject绑定纹理



这简直要把我逼疯了!

我已经创建了我的fbo

QOpenGLFramebufferObjectFormat format;
format.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil);
format.setMipmap(false);
format.setSamples(4);
format.setTextureTarget(GL_TEXTURE_2D);
format.setInternalTextureFormat(GL_RGBA32F_ARB);
qfbo=new QOpenGLFramebufferObject(QSize(w,h),format);

好的,它似乎正在工作,Qt没有声称。

问题是我需要QOpenGLFramebufferObject作为读/写,写在它上面似乎很容易,只是qfbo.bind()使其工作,问题是我不能绑定它的纹理,如果我问它关于GLuint处理它总是在两种模式下返回0:

qDebug()<<qfbo->texture();
qDebug()<<qfbo->takeTexture();

显然,我的意图是绑定纹理本身,如:

glBindTexture(GL_TEXTURE_1D, fbo->texture());
关于这个有什么建议吗?我已经搜索了很长时间了,没有运气:(

我忘了说,如果我不使用。setsamples(4);

如果你使用多重采样,没有纹理分配,而是使用多重采样的renderbuffer。

您需要创建另一个匹配维度的非多采样FBO,并使用blitFramebuffer将多采样数据解析为单采样数据。然后你将有纹理,你可以绑定(2D目标,而不是1D !)。如果这个纹理仍然是全黑的,在你的代码上运行apitrace,看看你做错了什么。

最新更新