2014-01-30 3 views
4

Я использую Qt для проекта. У этого есть некоторые QGLWidgets, и они работают красиво.Создать исходный контекст GL в Qt?

Проблема заключается в том, что у меня есть код устаревшего кода, который я хочу использовать, который использует необработанные команды OpenGL для выполнения некоторой обработки текстуры и сетки (рендеринг сеток для изображений и т. Д.). Я хочу назвать эти функции из моего Qt-кода, но, конечно, для этого я должен настроить свежий контекст OpenGL перед вызовом команд OpenGL.

я попытался сделать следующее:

QGLContext context(QGLFormat::defaultFormat()); 
std::cout << "context creation: " << context.create() << std::endl; 

if(!context.isValid()) 
{ 
    std::cout << "Cannot create GL context" << std::endl; 
    return false; 
} 

context.makeCurrent(); 
callLegacyOpenGLCode(); 

, но он не работает. QGLContext :: create() возвращает false. Это на Windows 7 с использованием Qt 4.8, скомпилированной с поддержкой OpenGL.

Это неправильный способ попросить Qt создать для меня новый контекст OpenGL? Что мне делать вместо этого?

+3

создать новый glwidget, который вы не показываете и используете его контекст –

ответ

5

Для кого-либо еще, кто ищет эту проблему, предложение @ ratchetfreak является хорошим. Следующий код работает правильно:

QGLWidget tmpwidget; 

if(!tmpwidget.isValid()) 
{ 
    std::cout << "Cannot create GL context" << std::endl; 
    return false; 
} 

tmpwidget.makeCurrent(); 
callLegacyOpenGLCode(); 
Смежные вопросы