2010-04-30 132 views
11

我試圖通過在按下按鍵時在實際呈現的頂部繪製深度緩衝區來進行調試目的。它主要工作,但生成的圖像似乎放大。(它不只是原始圖像,在一個奇怪的灰度)爲什麼它不是顏色緩衝區大小相同?可視化深度緩衝區

這是我使用的是什麼樣的看法的深度緩衝

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; 
} 

回答

0

該代碼應該工作。你有沒有機會有其他的東西叫glPixelZoom?值得重新設置,以檢查你是否確實沒有要求縮放。

1

我不知道這是否是你真正的錯誤,但有我可以建議你檢查的幾件事情。如果你實際提供的它究竟如何在放大截圖這將是很好。

首先,確保投影/模型視圖矩陣是完全一樣的渲染。我看不出它會如何影響它,但這是需要研究的。

其次,spec指定glPixelStore,glPixelTransfer和glPixelMap可能會影響結果,因此您需要確保這些設置已正確設置。

如果最終得到這方面的工作,請您分享什麼地方出錯了 - 似乎一個有趣的問題。 :)

0

一件事是檢查你的光柵位置是正確的。請參閱glRasterPos。 作爲發佈的代碼應該工作,但我可以看到狀態是如何搞砸了在其他地方(你做深入可視化之前畫點什麼...) 這麼說,你很可能在沒有好,因爲它測試的GL驅動的區域是不尋常的。 你應該做的未來: - 測試與不同的供應商(ATI/NV ..) - 寫讀取數據到一個文件,看看圖紙或閱讀預期

-4

1不工作)轉儲原始將深度緩衝區數據轉換爲文件。

2)使用IrfanView其打開(開啓爲 - > RAW文件)

3)調整參數(寬度,高度),並根據自己的深度緩衝器BPP的像素格式(8位,16位,... )。確保檢查灰度。

4)拿一杯啤酒。

0

模型和投影矩陣對此沒有影響。

也許嘗試抽籤位置glRasterPos或glWindowPos設置爲0,0。顯然還有glPixelZoom。