2011-10-27 2 views
1

Qt를 사용하는 OpenGL 앱을 작성 중이며 바탕 화면에서 올바르게 실행되지만 랩톱에서 똑같은 코드를 실행하면 빌드되지만 출력되지 않습니다. 저는 여기에 사용자가 윈도우, 따라서 고정 된 크기의 크기를 조정할 수 없도록하려면 내 MAIN.CPPQt 앱은 데스크톱에서 작동하지만 랩톱에서는 작동하지 않습니까?

#include <QtGui/QApplication> 
#include <QtOpenGL/QGLWidget> 
#include "GLWidget.h" 

int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 

    GLWidget window; 
    window.resize(1050,700); 
    window.setFixedSize(1050, 700); 
    window.show(); 

    return app.exec(); 
} 

입니다. 내가 메인의 마지막 줄에 중단 점을 설정하면 결코 내 노트북에 도달하지 못합니다. 나는 코드를 밟았으며 show()가 호출 된 직후 (이것은 인라인 함수 임) 디버거가 코드 0으로 완료됩니다. 모든 프로젝트 빌드를 확인하고 설정을 실행했지만 두 시스템에서 모두 동일합니다. 내 바탕 화면에는 1920x1080 모니터가 있지만 내 노트북은 1366x768만으로도 이와 관련이있을 수 있습니까? 내 화면 해상도에 따라 달라지는 Qt의 내부 검사가 있습니까? 그것이 내가 생각할 수있는 유일한 것입니다.

+0

어쩌면 GLWidget.h에서 내부적 인 내용일까요? –

+0

어떤 OS를 사용하고 있습니까? –

+2

당신의 추측이 맞을 수도 있습니다, @pixelpusher. 당신이 할 수있는 간단한 테스트가 있습니다. 통과하는 크기를 2로 나눠서, 새로운 애플리케이션이 랩탑뿐만 아니라 데스크톱에서 실행될 수 있는지 확인하십시오. – karlphillip

답변

1

나는 사용자가 윈도우 내가 이유를 여쭤봐도 될까요

크기를 조정할 수 싶지 않아? OpenGL을 사용하여이 크기의 이미지를 정확히 생성하기 때문에 창을 고정 크기로 만들겠습니까? 그렇다면, 나는 너에게 말해야한다, 그것은 그렇게 작동하지 않을 것이다. OpenGL 구현은 화면에 표시 될 내용 만 렌더링합니다 (픽셀 소유권 테스트). 창의 일부가 표시되지 않는 경우 (해당 경우 랩톱의 경우) 이러한 픽셀은 렌더링되지 않습니다. 프레임 버퍼를 읽어 내면 픽셀은 정의되지 않은 채로 남습니다.

이 문제를 해결하기위한 적절한 방법

의 pbuffer, 또는 프레임 버퍼 개체 (FBO) 중 하나를 사용하고 있습니다. FBO는 사용하기 쉽지만 Windows에서는 널리 지원되지 않습니다 (Windows의 Intel 그래픽은 FBO 지원이 다소 부족합니다). FBO는 모든 Linux OpenGL 구현 (Mesa (Intel도 포함), ATI/AMD 및 NVidia)에서 지원됩니다. FBO 및 PBuffer 튜토리얼은 웹에 있습니다.

관련 문제