Russian Qt Forum
Октябрь 16, 2024, 17:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Opengl  (Прочитано 4046 раз)
qimby
Гость
« : Март 30, 2013, 13:34 »

Здравствуйте. Решил изучить opengl с Qt, но возникли трудности решение которых не смог найти.
написал примитивный код для класса GLWidget
Код:
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QtOpenGL>
#include <GL/GL.H>

class GLWidget : public QGLWidget
{
public:
    GLWidget(QWidget *parent = 0);

protected:
    void initializeGL();
    void resizeGL(int nWidth, int nHeight);
    void paintGL();

};

#endif // WIDGET_H

Код:
#include "glwidget.h"

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


void GLWidget::initializeGL()
{
    glClearColor(1,0,1,1);
}

void GLWidget::resizeGL(int nWidth, int nHeight){


}

void GLWidget::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
}

он работает отлично, но если я в paintGL() припишу
Код:
glBegin(GL_POINTS);
glEnd();

выдаётся ошибка "was not declared in this scope", прописываю #include <GL/GL.h> , появляются 2 ошибки
C:\Qt\Qt5.0.1\5.0.1\mingw47_32\include\GL\gl.h:55: ошибка: conflicting declaration 'typedef double GLdouble'
C:\Qt\Qt5.0.1\5.0.1\mingw47_32\include\QtGui\qopengl.h:71: ошибка: 'GLdouble' has a previous declaration as 'typedef GLfloat GLdouble'

Прошу помочь. Спасибо
Записан
qimby
Гость
« Ответ #1 : Март 30, 2013, 19:14 »

в этом видеоуроке http://www.youtube.com/watch?v=1nzHSkY4K18
добавляется только <QGLWidget>  и он спокойно использует glBegin, glVertex, glEnd.
в .pro я добавил opengl
Записан
qimby
Гость
« Ответ #2 : Март 31, 2013, 00:29 »

убрал строку "typedef double GLdouble;" в gl.h и ошибка не появлялась, но на glBegin всё равно ругался, добавил в pro
"LIBS += -lopengl32" и ошибок теперь вообще нет, но только теперь всегда чёрный экран, glClear цыет фона не меняет и glVertex ничего не рисует.
Записан
alex312
Хакер
*****
Offline Offline

Сообщений: 606



Просмотр профиля
« Ответ #3 : Март 31, 2013, 09:41 »

В Qt5  по умолчанию используется версия EGL2.0 .
А всякие glBegin() из первой версии.
Поэтому не смотри всякие обучалки для Qt4, а бери примеры из Qt5 и изучай по ним.
Записан
qimby
Гость
« Ответ #4 : Март 31, 2013, 13:33 »

да, действительно! собрал дополнительно 4-ую версию и всё заработало в ней. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.132 секунд. Запросов: 22.