今天,在开发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 );
我希望comp
是GL_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。
有人以前见过类似的行为吗?如果是这样,可能有什么解决方法? 谢谢您提前的帮助
答案 0 :(得分:1)
这实际上是ARB DSA的Nvidia错误(我已于去年2月提交),如果您使用非命名版本,则不会给出验证错误。