nVidia GL驱动程序状态:纹理0是基本级别不一致

时间:2019-05-07 23:55:00

标签: opengl nvidia fbo glreadpixels pbo

我正在使用glDebugMessageCallback捕获OpenGL驱动程序消息。

启用所有消息源和严重性后,程序将触发以下消息:

纹理状态使用警告:纹理0为基本级别不一致。检查纹理大小。

该消息由glReadPixels调用触发,该调用尝试使用PixelBufferObject(PBO)从FBO帧缓冲区中读取深度值。

确切的glReadPixels调用看起来像这样:

glBindBuffer( GL_PIXEL_PACK_BUFFER, pboid );
glReadPixels( srcx, srcy, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, 0 );

PBO创建为:

glBindBuffer( GL_PIXEL_PACK_BUFFER, pboid );
glBufferData( GL_PIXEL_PACK_BUFFER, DATA_SIZE, 0, GL_STREAM_READ );

该消息实际上是什么意思?什么是“基础水平一致”?该级别指的是什么?

正在读取的FBO具有COLOR_ATTACHMENT0和DEPTH_ATTACHMENT,并且已完成。

FBO的颜色纹理(800x640像素)是使用以下方法创建的:

glTexImage2D
(
    GL_TEXTURE_2D,
    0,
    GL_RGBA,
    w, h,
    0,
    GL_RGBA,
    GL_UNSIGNED_BYTE,
    0
);

FBO的深度纹理(800x640像素)是使用以下方法创建的:

GLint internal_fmt = GL_DEPTH_COMPONENT24;
glTexImage2D
(
    GL_TEXTURE_2D,      // target
    0,                  // level
    internal_fmt,       // internal format
    w, h,               // width, height
    0,                  // border
    GL_DEPTH_COMPONENT, // format
    GL_UNSIGNED_INT,    // type
    0                   // pixels
);

glCheckFramebufferStatus(GL_FRAMEBUFFER)返回 GL_FRAMEBUFFER_COMPLETE

glGetError()不返回错误。

操作系统:Ubuntu LTS

GPU :nVidia GTX750Ti

GL版本:核心配置文件3.3

驱动程序:NVIDIA 390.116

0 个答案:

没有答案