[英]Get depth buffer from QGLPixelBuffer
我在QT應用程序中使用OpenGL。 在某個時候,我正在渲染到QGLPixelBuffer。 我需要獲取圖像的深度緩沖區,這是我通常使用glReadPixels(...,GL_DEPTH_COMPONENT,...)完成的操作; 我嘗試將QGLPixelBuffer設置為當前值,然后使用glReadPixels(),但得到的只是一張白色圖像。
這是我的代碼
bufferCanvas->makeCurrent();
[ ...render... ]
QImage snapshot(QSize(_lastWidth, _lastHeight), QImage::Format_Indexed8);
glReadPixels(0, 0, _lastWidth, _lastHeight, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, snapshot.bits());
snapshot.save("depth.bmp");
顯然有什么問題嗎?
好吧,不能保證存儲在QImage中的基礎像素數據(並通過其QImage :: bits()函數獲得)與OpenGL的glReadPixels()函數所寫的兼容。
由於您使用的是QGLPixelBuffer,所以QGLPixelBuffer :: toImage()有什么問題?
我從來沒有直接使用過QImage,但是我會嘗試回答以下問題:
希望這可以幫助
瘋狂的猜測隨之而來。
您正在使用QImage創建索引位圖,但是沒有設置顏色表。 我的猜測是默認的顏色表使您的圖像顯示為白色。 在保存圖像之前,請嘗試以下操作:
for ( int i = 0 ; i <= 255 ; i++ ) {
snapshot.setColor( i, qRGB( i, i, i ) );
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.