Когда создается контекст рендеринга в opengl с помощью Qt? - PullRequest
2 голосов
/ 15 ноября 2011

Я пробую OpenGL с Qt.Я скомпилировал 2dpainting пример из документации Qt.В этом примере две анимации соседствуют друг с другом: одна работает естественным образом, а другая визуализируется OpenGL.Я не вижу разницы, хотя.Как я могу убедиться, что аппаратный ускоритель используется.Я запускаю пример на встраиваемом устройстве с Ангстрем Linux.

Я добавил строку в конструктор виджета opengl, чтобы определить используемый рендерер, но функция всегда возвращает указатель NULL.

GLWidget::GLWidget(Helper *helper, QWidget *parent)
     : QGLWidget(QGLFormat(QGL::SampleBuffers), parent), helper(helper)
 {
        elapsed = 0;
        setFixedSize(200, 200);
        setAutoFillBackground(false);
        printf("  OpenGL Renderer:   %s\n",glGetString(GL_RENDERER)); //added this line

 }

Сейчас я читаю на многочисленных онлайн-форумах, что мне нужен действительный контекст рендеринга.Но что это значит и когда он создается при использовании Qt?Я попытался поместить ту же функцию во все другие функции GLWidget, но безуспешно.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Я полагаю, что он инициализируется как можно позже, то есть когда что-то действительно нужно нарисовать.

Из документов QGLWidget::paintEvent():

Обрабатывает события рисования, переданные в параметре события.Будет вызывать виртуальную функцию paintGL ().
Контекст визуализации виджета станет текущим контекстом , и будет вызываться initializeGL (), если он еще не был вызван .

1 голос
/ 15 ноября 2011

Сцена openGL визуализируется в функции QGlWidget paintGL , которую обычно нужно извлечь из QGlWidget с помощью собственной функции paintGL

Уроки NeHe были адаптированы для Qt

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...