C++ 为什么这个帧缓冲区不完整?(外部帧缓冲区对象)
这段代码适用于我喜欢的、半新的Nvidia计算机,但当使用英特尔GPU运行时,帧缓冲区是不完整的,其驱动程序可能已经有几年的历史了: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
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,它们都是完整的。