2009-02-05 2 views
0

QT 응용 프로그램에서 OpenGL을 사용하고 있습니다. 어떤 시점에서 QGLPixelBuffer에 렌더링됩니다. 이미지의 깊이 버퍼를 가져와야하는데, 일반적으로 glReadPixels (..., GL_DEPTH_COMPONENT, ...); 나는 현재 QGLPixelBuffer를 만들고 나서 glReadPixels()를 사용하려고 노력했으나 모두 흰색 이미지를 얻는다.QGLPixelBuffer에서 깊이 버퍼 가져 오기

여기에 내 코드 그것과 분명히 잘못된

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"); 

아무것도입니까?

답변

0

내가 직접 QImage를 사용한 적이 있지만, 나는 대답 또는 다음과 같은 영역을 조사하려고합니다 : 이미지를 읽기 전에

  1. 당신이 깊이 비트 glClear()를 호출하고 있습니까?
  2. QGLFormat에 깊이 버퍼가 사용 설정되어 있습니까?
  3. readPixel을 직접 덤프하고 올바른 데이터가 있는지 확인할 수 있습니까?
  4. QImage :: bits()는 필요한 정렬을 통해 순차적 메모리 저장소를 보장합니까?

희망이

0

추측은 다음 데 도움이됩니다.

QImage를 사용하여 색인화 된 비트 맵을 만들지 만 색상 표를 채우지는 않습니다. 내 생각 엔 기본 색상 표가 이미지를 흰색으로 보이게합니다. 이미지 저장하기 전에이 시도 :

for (int i = 0 ; i <= 255 ; i++) { 
    snapshot.setColor(i, qRGB(i, i, i)); 
} 
1

글쎄, 기본 픽셀 데이터가 QImage에 저장 (및 QImage :: 비트() 함수를 통해 얻은) 않는다는 보장은() 함수 것을는 OpenGL의 glReadPixels 호환이됩니다 없다 씁니다.

QGLPixelBuffer를 사용하고 있으므로 QGLPixelBuffer::toImage()의 문제점은 무엇입니까?

관련 문제