可视化深度缓冲区

Tha*_*tos 12 c++ opengl

我正在尝试将深度缓冲区可视化以进行调试,方法是在按下某个键时将其绘制在实际渲染的顶部.它主要是工作,但结果图像似乎放大了.(它不仅仅是原始图像,在一个奇怪的灰度级)为什么它与颜色缓冲区的大小不同?

这就是我正在使用深度缓冲区的视图:

void get_gl_size(int &width, int &height)
{
    int iv[4];
    glGetIntegerv(GL_VIEWPORT, iv);
    width = iv[2];
    height = iv[3];
}

void visualize_depth_buffer()
{
    int width, height;

    get_gl_size(width, height);

    float *data = new float[width * height];

    glReadPixels(0, 0, width, height, GL_DEPTH_COMPONENT, GL_FLOAT, data);
    glDrawPixels(width, height, GL_LUMINANCE, GL_FLOAT, data);

    delete [] data;
}
Run Code Online (Sandbox Code Playgroud)

Bah*_*bar 0

该代码应该可以工作。您是否有其他称为glPixelZoom 的东西?值得重置它以检查您是否实际上要求缩放。