Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2014, 20:36   #1
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию QGLWidget в Qt

В официальных доках изображен такой код:
Код:
class MyGLDrawer : public QGLWidget
{
    Q_OBJECT        // must include this if you use Qt signals/slots

public:
    MyGLDrawer(QWidget *parent)
        : QGLWidget(parent) {}

protected:

    void initializeGL()
    {
        // Set up the rendering context, define display lists etc.:
        ...
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glEnable(GL_DEPTH_TEST);
        ...
    }

    void resizeGL(int w, int h)
    {
        // setup viewport, projection etc.:
        glViewport(0, 0, (GLint)w, (GLint)h);
        ...
        glFrustum(...);
        ...
    }

    void paintGL()
    {
        // draw the scene:
        ...
        glRotatef(...);
        glMaterialfv(...);
        glBegin(GL_QUADS);
        glVertex3f(...);
        glVertex3f(...);
        ...
        glEnd();
        ...
    }

};
Везде рекомендуют сделать потомка QGLWidget и потом только использовать. Как в таком случае указать версию OpenGL? Передать конструктору объект QGLFormat не получается. Я даже пытался ссылаться на другой конструктор, но все безуспешно.

P.S. Раньше для поделок OpenGL 3.3 я использовал glut. Нынче хочу запрячь Qt. Копировал 100% рабочий код с VBO из glut проекта в Qt и на сегфолтов. Спрашиваю: "GLEW_VERSION_3_3?" Говорит: "Нет". QOpenGLBuffer пока не хочу.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.07.2014, 13:18   #2
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

http://qt-project.org/doc/qt-4.8/qgl...html#setFormat - Почему эта функция не указанна в доках к QGLWidget? Там есть только ссылка на нее.

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 23.07.2014, 18:05   #3
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Цитата:
Везде рекомендуют сделать потомка QGLWidget и потом только использовать. Как в таком случае указать версию OpenGL? Передать конструктору объект QGLFormat не получается. Я даже пытался ссылаться на другой конструктор, но все безуспешно.
как вы задавали версию в ином случае?
rrrFer вне форума Ответить с цитированием
Старый 24.07.2014, 13:15   #4
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

Передавал конструктору QGLWidget. Касаясь кода выше, то конструктору MyGLDrawer

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог
_PROGRAMM_ вне форума Ответить с цитированием
Старый 24.07.2014, 13:24   #5
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

Код:
QGLWidget ( QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 )
QGLWidget ( QGLContext * context, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 )
QGLWidget ( const QGLFormat & format, QWidget * parent = 0, const QGLWidget * shareWidget = 0, Qt::WFlags f = 0 )
Где тут версия?
Приведите небольшой пример (это ведь 1 строка?)

Цитата:
P.S. Раньше для поделок OpenGL 3.3 я использовал glut. Нынче хочу запрячь Qt
Я думал (ошибаюсь вероятно), что в Qt используется OpenGL 2.0. Вроде как я читал давненько, что у них это веско обоснованно.
rrrFer вне форума Ответить с цитированием
Старый 24.07.2014, 13:45   #6
_PROGRAMM_
Участник клуба
 
Аватар для _PROGRAMM_
 
Регистрация: 30.07.2009
Сообщений: 1,601
По умолчанию

QGLFormat. Этот класс задает много настроек.
Цитата:
Я думал (ошибаюсь вероятно), что в Qt используется OpenGL 2.0. Вроде как я читал давненько, что у них это веско обоснованно.
Проверю.

-----------------
Цитата:
Версия Qt 4.7.1 распознаёт реализации до OpenGL 4.0 включительно.
c gamedev. А нынче на дворе Qt 5.3

В мире нет вечных двигателей, зато есть вечные тормоза...

Блог

Последний раз редактировалось _PROGRAMM_; 24.07.2014 в 13:51.
_PROGRAMM_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
баги в окнах QGLWidget SAMOUCHKA Qt и кроссплатформенное программирование С/С++ 17 14.01.2013 20:40