Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将不同大小的纹理附着到FBO时出现的问题_C_Opengl_Nvidia_Framebuffer - Fatal编程技术网

C 将不同大小的纹理附着到FBO时出现的问题

C 将不同大小的纹理附着到FBO时出现的问题,c,opengl,nvidia,framebuffer,C,Opengl,Nvidia,Framebuffer,今天我在开发OpenGL 4.5应用程序时遇到了一个奇怪的问题。我尝试将两个不同大小的纹理作为颜色附件附加到一个FBO,以便创建bloom着色器。据我所知,在现代OpenGL版本中,这应该是可能的 这是我正在使用的代码: //Create textures GLuint tex[2]; glCreateTextures( GL_TEXTURE_2D, 2, tex ); glTextureStorage2D( tex[0], 1, GL_RGB8, 2048, 2048 ); glTexture

今天我在开发OpenGL 4.5应用程序时遇到了一个奇怪的问题。我尝试将两个不同大小的纹理作为颜色附件附加到一个FBO,以便创建bloom着色器。据我所知,在现代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\u FRAMEBUFFER\u COMPLETE
,但是,在我的例子中
glCheckNamedFramebufferStatus
返回
GL\u FRAMEBUFFER\u COMPLETE\u EXT

我担心这可能是基于这两个线程的一些驱动程序错误,因为显然,
不完整的\u维度
已从较新的OpenGL版本中删除:


以下是说明问题的完整代码-。
我的输出是:

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

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

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

您好。您解决了这个问题吗?我在一个类似的用例中体验到了完全相同的状态。@MichaelIV不幸的是,我仍然没有解决这个问题。为了确保没有任何变化,我试着运行这里发布的示例代码。结果是一样的。我可以告诉你为什么我的案子里会有那个东西。我还有一个与颜色附件大小不同(更大)的模板附件。如果我删除了该模板缓冲区,那么问题就解决了。这很奇怪,因为我认为OpenGL也允许非颜色附件具有不同的大小。但它看起来不一样。@MichaelIV在我的例子中,我希望有一个具有多个颜色附件的FBO来实现延迟渲染和基于双通道高斯滤波器的bloom效果。因此,我需要一个额外的附件和它的大小转换-这就是我面临的问题。如果我删除附加附件或更改其尺寸以匹配其他附件,则效果良好。显然,为了重现这个问题,不需要非彩色附件。真奇怪。。。明天我将尝试用不同的GPU和驱动程序在PC上运行此代码,并让您知道结果。@MichaelIV我让我的朋友运行此代码,结果是相同的。他有相同的驱动程序版本和Nvidia GT 440图形卡。我用DSA API得到这个。我使用的是驱动程序V411.81这是一个已确认的驱动程序错误