Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 27.10.2016
Сообщений: 12
1

Работа с библиотекой glut

27.10.2016, 19:31. Показов 1274. Ответов 5
Метки нет (Все метки)

Здравствуйте.
Не получается скомпилировать код из-за ошибки: 'glutSolidCone' was not declared in this scope. Но все что нужно я вроде подключил.
Вот строка в pro файле:
C++ (Qt)
1
LIBS += -lglu32 -lopengl32 -lglut32 -lglut
Может я не правильно подключаю?
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.10.2016, 19:31
Ответы с готовыми решениями:

Работа с библиотекой
Есть динамическая библиотека, как вызвать фукцию которая храниться в библиотеки????

Работа с QWT библиотекой
Добрый день. Хотел бы поинтересоваться, кто имел опыт работы с QWT библиотекой:)? У меня...

C++ Qt работа с библиотекой QtSerialPort
Библиотеку собрал, все вроде прошло сладко да гладко, но когда пытаюсь откомпилить тестовый...

Работа с библиотекой Qt без Qt Creator
Можно ли работать с графической библиотекой Qt без Qt Creator, используя gcc или clang.

5
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
28.10.2016, 10:53 2
А заголовочный файл нужный(е) подключен(ы)?
0
0 / 0 / 0
Регистрация: 27.10.2016
Сообщений: 12
29.10.2016, 23:40  [ТС] 3
monolit, тут такая проблема, что когда я подключаю заголовочные файлы
C++ (Qt)
1
2
#include <GL/glu.h>
#include <GL/glut.h>
то на последнее подключение он ругается, хотя файл lut лежит с файлом glu рядом, в одной директории.
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
30.10.2016, 12:01 4
Вот и проблема нашлась.
glut не обязательно лежать в одной директории с glu, это немного разные "расширения" OpenGL.
Пытайся подключить, мб из другой папки... что я еще могу сказать. Где-то что-то не указал, значит. Без доступа к системе гадать бессмысленно.
1
0 / 0 / 0
Регистрация: 27.10.2016
Сообщений: 12
01.11.2016, 00:59  [ТС] 5
monolit, я вроде все проверил, добавил библиотеки (оказалось, что у меня glut не в той папке лежал). роде сейчас никаких ошибок не показывает, но при запуске высвечивается пустая консоль и компиляция завершается с кодом -1073741511. Вроде бы это говорит о том, что где то есть ссылка на несуществующий класс (?)
Вот сам код
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "scene.h"
#define GLUT_DISABLE_ATEXIT_HACK
 
Scene::Scene(QWidget *parent)
    : QGLWidget(parent)
{}
 
//Параметры материала конуса
float mat2_dif[] = { 0.0f, 0.0f, 0.8f };
float mat2_amb[] = { 0.2f, 0.2f, 0.2f };
float mat2_spec[] = { 0.6f, 0.6f, 0.6f };
float mat2_shininess = 0.7f * 128;
 
//Параметры материала шара
float mat3_dif[] = { 0.9f, 0.2f, 0.0f };
float mat3_amb[] = { 0.2f, 0.2f, 0.2f };
float mat3_spec[] = { 0.6f, 0.6f, 0.6f };
float mat3_shininess = 0.1f * 128;
 
 
void Scene::initializeGL()
{
    GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
            GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
            GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
            GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
 
            //Установка параметров источника света
            glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
            glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
            glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
            glLightfv(GL_LIGHT0, GL_POSITION, light_position);
 
            //Включение освещения и источника света
            glEnable(GL_LIGHTING);
            glEnable(GL_LIGHT0);
 
            //Включение z-буфера
            glEnable(GL_DEPTH_TEST);
    }
 
void Scene::paintGL()
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(20.0, 1.0, 0.0, 0.0);
 
    //Конус
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat2_amb);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat2_dif);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat2_spec);
    glMaterialf(GL_FRONT, GL_SHININESS, mat2_shininess);
 
    glPushMatrix();
    glTranslatef(-0.75, -0.5, 0.0);
    glRotatef(270.0, 1.0, 0.0, 0.0);
    glutSolidCone(1.0, 2.0, 15, 15);
    glPopMatrix();
 
    //Шар
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat3_amb);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat3_dif);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat3_spec);
    glMaterialf(GL_FRONT, GL_SHININESS, mat3_shininess);
 
    glPushMatrix();
    glTranslatef(0.75, 0.0, -1.0);
    glutSolidSphere(1.0, 15, 15);
    glPopMatrix();
 
    glPopMatrix();
    glFlush();
}
 
 void Scene::resizeGL(int w, int h)
    {
 
     glViewport(0, 0, w, h);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
 
     gluPerspective(
             40.0, //Угол зрения
             w / h, //Коэффициент сжатия окна
             1, 100.0); //Расстояние до плоскостей отсечения
     glMatrixMode(GL_MODELVIEW);
 
     glLoadIdentity();
     gluLookAt(
             0.0f, 0.0f, 8.0f, //Положение камеры
             0.0f, 0.0f, 0.0f, //Центр сцены
             0.0f, 1.0f, 0.0f); //Положительное направление оси у
 
}

Вот pro файл.
Кликните здесь для просмотра всего текста

QT += core gui opengl
LIBS += -lglu32 -lopengl32 -lglut32

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = SecondProject
TEMPLATE = app


SOURCES += main.cpp\
Scene.cpp

HEADERS += Scene.h


Такая работа связана все еще с неправильным подключением glut или уже ошибку надо искать в коде?

Добавлено через 1 минуту
Упс, косяк со спойлером. Вот код:
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include "scene.h"
#define GLUT_DISABLE_ATEXIT_HACK
 
Scene::Scene(QWidget *parent)
    : QGLWidget(parent)
{}
 
//Параметры материала конуса
float mat2_dif[] = { 0.0f, 0.0f, 0.8f };
float mat2_amb[] = { 0.2f, 0.2f, 0.2f };
float mat2_spec[] = { 0.6f, 0.6f, 0.6f };
float mat2_shininess = 0.7f * 128;
 
//Параметры материала шара
float mat3_dif[] = { 0.9f, 0.2f, 0.0f };
float mat3_amb[] = { 0.2f, 0.2f, 0.2f };
float mat3_spec[] = { 0.6f, 0.6f, 0.6f };
float mat3_shininess = 0.1f * 128;
 
 
void Scene::initializeGL()
{
    GLfloat light_ambient[] = { 0.0, 0.0, 0.0, 1.0 };
            GLfloat light_diffuse[] = { 1.0, 1.0, 1.0, 1.0 };
            GLfloat light_specular[] = { 1.0, 1.0, 1.0, 1.0 };
            GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
 
            //Установка параметров источника света
            glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient);
            glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
            glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular);
            glLightfv(GL_LIGHT0, GL_POSITION, light_position);
 
            //Включение освещения и источника света
            glEnable(GL_LIGHTING);
            glEnable(GL_LIGHT0);
 
            //Включение z-буфера
            glEnable(GL_DEPTH_TEST);
    }
 
void Scene::paintGL()
{glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glPushMatrix();
    glRotatef(20.0, 1.0, 0.0, 0.0);
 
    //Конус
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat2_amb);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat2_dif);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat2_spec);
    glMaterialf(GL_FRONT, GL_SHININESS, mat2_shininess);
 
    glPushMatrix();
    glTranslatef(-0.75, -0.5, 0.0);
    glRotatef(270.0, 1.0, 0.0, 0.0);
    glutSolidCone(1.0, 2.0, 15, 15);
    glPopMatrix();
 
    //Шар
    glMaterialfv(GL_FRONT, GL_AMBIENT, mat3_amb);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat3_dif);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat3_spec);
    glMaterialf(GL_FRONT, GL_SHININESS, mat3_shininess);
 
    glPushMatrix();
    glTranslatef(0.75, 0.0, -1.0);
    glutSolidSphere(1.0, 15, 15);
    glPopMatrix();
 
    glPopMatrix();
    glFlush();
}
 
 void Scene::resizeGL(int w, int h)
    {
 
     glViewport(0, 0, w, h);
     glMatrixMode(GL_PROJECTION);
     glLoadIdentity();
 
     gluPerspective(
             40.0, //Угол зрения
             w / h, //Коэффициент сжатия окна
             1, 100.0); //Расстояние до плоскостей отсечения
     glMatrixMode(GL_MODELVIEW);
 
     glLoadIdentity();
     gluLookAt(
             0.0f, 0.0f, 8.0f, //Положение камеры
             0.0f, 0.0f, 0.0f, //Центр сцены
             0.0f, 1.0f, 0.0f); //Положительное направление оси у
 
}
Вот pro файл
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
QT       += core gui opengl
LIBS += -lglu32 -lopengl32 -lglut32
 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 
TARGET = SecondProject
TEMPLATE = app
 
 
SOURCES += main.cpp\
        Scene.cpp
 
 
HEADERS  += Scene.h
0
188 / 187 / 46
Регистрация: 24.03.2011
Сообщений: 670
01.11.2016, 10:40 6
Попробуй под отладчиком пройтись, по строчкам.
Или закомментировать определенные участки (сперва, к примеру, всю отрисовку, если поможет - уже пытаться локализовать ошибку.

Раз программа скомпилировалась, то дело скорее в коде.
Если дело в glut'ных функциях, то нетрудно самому написать функцию для генерации конуса (у меня даже где-то валялся код).
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2016, 10:40

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Работа с библиотекой Boost (asio)
Проблема заключается в том, что не могу правильно подключить библиотеку. вот вырезки из файлов...

Работа с библиотекой Glut
Здравствуйте, нужна помощь с текстом программы и работе билдера с библиотекой glut. Glut с горем...

Работа с трехмерными примитивами. Вокруг конуса GLU вращаются сфера GLUT и конус GLUT
создание виртуальной камеры gluLookAt и добавление эффектов анимации. вот само задание Вокруг...

Я новичок создаю программу подскажите в чём смысл ошибок???? что-то с библиотекой glut ?
Создаю программу моделирование гравитации ) выдавало ошибку что нет библиотеки glut ) нашёл в инете...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.