在FBO上附加不同大小的纹理的问题

时间:2018-07-12 11:39:05

标签: c opengl nvidia framebuffer

今天,在开发OpenGL 4.5应用程序时遇到了一个奇怪的问题。我尝试将两个大小不同的纹理作为颜色附件附加到一个FBO,以创建Bloom Bloom Shader。据我所知,在现代OpenGL版本中,这应该是可能的。

这是我正在使用的代码:

//Create textures
GLuint tex[2];
glCreateTextures( GL_TEXTURE_2D, 2, tex );
glTextureStorage2D( tex[0], 1, GL_RGB8, 2048, 2048 );
glTextureStorage2D( tex[1], 1, GL_RGB8, 1024, 1024 );

//Create FBO
GLuint fbo;
glCreateFramebuffers( 1, &fbo );
glNamedFramebufferTexture( fbo, GL_COLOR_ATTACHMENT0, tex[0], 0 );
glNamedFramebufferTexture( fbo, GL_COLOR_ATTACHMENT1, tex[1], 0 );

//Check completeness
GLenum comp = glCheckNamedFramebufferStatus( fbo, GL_FRAMEBUFFER );

我希望compGL_FRAMEBUFFER_COMPLETE,但是,在我的情况下,glCheckNamedFramebufferStatus返回GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT

基于这两个线程,恐怕可能是一些驱动程序错误,因为显然INCOMPLETE_DIMENSIONS已从较新的OpenGL版本中删除:

以下是说明问题的完整代码-https://pastebin.com/c9Hqzzky
我的输出是:

0x8cd9
0x8cd9 - GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT
fbotest: fbotest.c:41: main: Assertion `comp != GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT' failed.
Aborted (core dumped)

我有Nvidia GTX 1060显卡,Ubuntu 18.04LTS和Nvidia驱动程序版本390.67。

有人以前见过类似的行为吗?如果是这样,可能有什么解决方法? 谢谢您提前的帮助

1 个答案:

答案 0 :(得分:1)

这实际上是ARB DSA的Nvidia错误(我已于去年2月提交),如果您使用非命名版本,则不会给出验证错误。