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

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

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2015, 23:58   #1
wf778899
 
Регистрация: 11.03.2015
Сообщений: 5
По умолчанию OpenGL4.3 в Qt5.1 - подключение функций

Привет всем.
Решил разобраться с OpenGL на QT. У меня Qt5.1, Windows7x64. Копаться в старом GL смысла больше не вижу. Как я понял, в QTе для всех функций, начиная с OpenGL 1.1, надо прописывать точки входа. Стал читать, как это делается. Как я понял - с помощью классов формата и контекста. Толком так ничего и не получилось. Короче, что я сделал (код ниже):
Код:
#include "Scene.h"
#include <QGLWidget>
#include <QtOpenGL>
#include <QGLFormat>
#include <QGLContext>
#include <QOpenGLContext>
#include <QOpenGLFunctions_4_3_Core>
#include <QGLFunctions>

Widget::Widget(QWidget *parent) : QGLWidget(parent){}

Widget::~Widget(){}

void Widget::initializeGL(){
    glClearColor(1.0, 1.0, 1.0, 1.0);
}

void Widget::resizeGL(int w, int h){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0);
    glViewport(0, 0, (GLint)w, (GLint)h);
}

void Widget::paintGL() {
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    QGLFormat format;
    format.setVersion(4, 3);
    QGLContext cont(format);
    cont.create();
    cont.makeCurrent();
    QOpenGLFunctions_4_3_Core *m_funcs;
    m_funcs = cont.functions();
    m_funcs->glCreateShader(GL_VERTEX_SHADER);
}
Простой класс, который ничего не делает (только окно выводит). В его рисовальщике я создал формат, которому прописал только одну настройку - использовать OpenGL4.3 (проверял, поддерживается). Потом этот формат я задаю контексту и делаю его текущим. Потом получаю объект функций QOpenGLFunctions_4_3_Core и назначаю ему все точки входа. Вот здесь (m_funcs = cont.functions() компилятор встаёт на дыбы и пишет "cannot convert 'QGLFunctions*' to 'QOpenGLFunctions_4_3_Core*' in assignment". Понятно, что типы не стыкуются. Объясните, пожалуйста, как правильно назначать точки входа - как я успел понять, без этого OpenGL теряет смысл... На всякий случай проект прикрепил.
Вложения
Тип файла: rar GL1.rar (472.9 Кб, 8 просмотров)
wf778899 вне форума Ответить с цитированием
Старый 13.03.2015, 19:02   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Deleted Deleted Deleted

Последний раз редактировалось 8Observer8; 13.03.2015 в 19:10.
8Observer8 вне форума Ответить с цитированием
Старый 13.03.2015, 19:07   #3
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Используйте QOpenGLWidget, так QGLWidget устарел. Нужно поставить Qt5.4. Я никакие точки входа не прописываю. Посмотрите примеры, которые идут с Qt в папке opengl. Ещё я записал, как я рисую, может пригодится. Есть смысл придерживаться OpenGL ES, тогда вы можете собирать ваши приложения под Android
8Observer8 вне форума Ответить с цитированием
Старый 13.03.2015, 21:09   #4
wf778899
 
Регистрация: 11.03.2015
Сообщений: 5
По умолчанию

Спасибо, про QGLWidget я не знал.
wf778899 вне форума Ответить с цитированием
Старый 13.03.2015, 23:33   #5
wf778899
 
Регистрация: 11.03.2015
Сообщений: 5
По умолчанию

Только Ваших примеров нет, перезалить можно?
wf778899 вне форума Ответить с цитированием
Старый 13.03.2015, 23:42   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Если примеры не выбирали при установке, то нужно запустить MaintenanceTool.exe Желательно поставить Qt5.4, так как QOpenGLWidget там появился и начать с этих:
- C:\Qt\Qt5.4.0\Examples\Qt-5.4\opengl\hellogl2
- C:\Qt\Qt5.4.0\Examples\Qt-5.4\opengl\qopenglwidget
8Observer8 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
padeg.dll и Qt5 Mr_ViK Общие вопросы C/C++ 0 07.04.2014 16:18
Qt5.1 не собирается проект SAMOUCHKA Qt и кроссплатформенное программирование С/С++ 2 18.08.2013 13:39
Перевод с QT5 в Delphi arxlex Общие вопросы Delphi 8 30.03.2012 16:08
Перевод с С++(QT5) в Delphi arxlex Помощь студентам 0 29.03.2012 10:15
Delphi: аппроксимация функций методом базиса из финитных функций Denna Помощь студентам 1 12.03.2012 19:23