Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/162.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++ 为什么这个帧缓冲区不完整?(外部帧缓冲区对象)_C++_Opengl_Framebuffer - Fatal编程技术网

C++ 为什么这个帧缓冲区不完整?(外部帧缓冲区对象)

C++ 为什么这个帧缓冲区不完整?(外部帧缓冲区对象),c++,opengl,framebuffer,C++,Opengl,Framebuffer,这段代码适用于我喜欢的、半新的Nvidia计算机,但当使用英特尔GPU运行时,帧缓冲区是不完整的,其驱动程序可能已经有几年的历史了: GLuint fbo = 0; glGenFramebuffersEXT( 1, &fbo ); GLuint tex = 0; glGenTextures( 1, &tex ); glBindTexture( GL_TEXTURE_2D, tex ); glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 320, 2

这段代码适用于我喜欢的、半新的Nvidia计算机,但当使用英特尔GPU运行时,帧缓冲区是不完整的,其驱动程序可能已经有几年的历史了:

GLuint fbo = 0;
glGenFramebuffersEXT( 1, &fbo );

GLuint tex = 0;
glGenTextures( 1, &tex );
glBindTexture( GL_TEXTURE_2D, tex );
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB, 320, 240, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );

glBindFramebufferEXT( GL_FRAMEBUFFER_EXT, fbo );
glFramebufferTexture2DEXT( GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, tex, 0 );

GLenum attachment = GL_COLOR_ATTACHMENT0_EXT;
glDrawBuffers( 1, &attachment );

GLenum status = glCheckFramebufferStatusEXT( GL_FRAMEBUFFER_EXT );
// status is GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT
英特尔one显然支持此扩展(GLEW\u EXT\u framebuffer\u对象true)。其版本字符串为“2.1.0-build8.15.10.2086”


这是一个驱动程序错误,还是我做错了什么?除了告诉人们更新他们的驱动程序或购买更好的东西之外,我还能做些什么呢?

尝试使用
GL\u RGBA
作为格式,而不是
GL\u RGB
。即使
GL\u RGB
在规范中被列为可渲染格式,但渲染为RGB格式不如渲染为RGBA格式受支持。@Reto我可以尝试一下,但也许我应该提到,我创建了其他同样使用GL\u RGB的纹理/FBO,它们都是完整的。