Форум программистов, компьютерный форум, киберфорум
Наши страницы
OpenGL
Войти
Регистрация
Восстановить пароль
 
saqef
24 / 27 / 15
Регистрация: 16.04.2017
Сообщений: 436
Записей в блоге: 4
Завершенные тесты: 1
#1

Qt + OpenGL не выводятся фигуры - OpenGL

18.08.2017, 16:46. Просмотров 265. Ответов 2

Пытаюсь нарисовать простейшие примитивы, но не выходит.
Фон устанавливается, буфер очищается, а фигуры не выводятся.
Отладчиком проверил: paintGL полностью выполняется.
В чём ошибка?
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
main.cpp
 
#include <QGuiApplication>
#include "window.h"
 
 
int main(int argc, char *argv[])
{
    QGuiApplication a(argc, argv);
 
      // Set OpenGL Version information
      // Note: This format must be set before show() is called.
      QSurfaceFormat format;
      format.setRenderableType(QSurfaceFormat::OpenGL);
      format.setProfile(QSurfaceFormat::CoreProfile);
      format.setVersion(3,5);
 
      // Set the window up
      Window window;
      window.setFormat(format);
      window.resize(800, 600);
      window.show();
 
 
 
      return a.exec();
}
 
///////////////////////////////////////////////////////////////////////////////////////
window.h
 
#ifndef WINDOW_H
#define WINDOW_H
 
#include <QOpenGLWindow>
#include <QOpenGLFunctions>
 
 
class Window : public QOpenGLWindow,protected QOpenGLFunctions
{
    Q_OBJECT
    // OpenGL Events
    public:
      void initializeGL();
      void resizeGL(int width, int height);
      void paintGL();
 
};
 
#endif // WINDOW_H
 
/////////////////////////////////////////////////////////////////////////////////////////
window.cpp
 
#include "window.h"
 
 
void Window::initializeGL()
{
  // Initialize OpenGL Backend
 
  initializeOpenGLFunctions();
 
 
  // Set global information
  glClearColor(0.50f, 0.430f, 0.430f, 0.0f);
 
}
 
void Window::resizeGL(int width, int height)
{
  // Currently we are not handling width/height changes
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0,100,0,100,-100,100);
    glViewport(0,0,width,height);
 
}
 
void Window::paintGL()
{
  // Clear
 
    glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
 
    glColor3f(0.25, 0.87, 0.81);
    glBegin(GL_TRIANGLES);
 
    glVertex2f(100, 0);
    glVertex2f(100, 100);
    glVertex2f(100, 0);
 
    glEnd();
 
    glColor3f(0.13, 0.56, 0.13);
 
    glBegin(GL_QUADS);
 
    glVertex2f(100, 50);
    glVertex2f(0, 100);
    glVertex2f(50, 100);
    glVertex2f(50, 50);
 
    glEnd();
 
    glLineWidth(2.0);
    glColor3f(0.65, 0.16, 0.16);
    glBegin(GL_LINE_STRIP);
 
    glVertex2f(0, 50);
    glVertex2f(50, 100);
    glVertex2f(100, 50);
    glVertex2f(50, 0);
    glVertex2f(0, 50);
 
    glEnd();
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2017, 16:46
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Qt + OpenGL не выводятся фигуры (OpenGL):

Рисование фигуры в OpenGL
Здравствуйте, дан файл в котором имеется массив точек, нужно по нему построить...

SDL openGL Вращение фигуры
Народ помогите. Нужно сделать так чтоб фигура вращалась при нажатии клавиш...

OpenGL движение фигуры в окне
Здравствуйте, форумчане. Есть проблема. Есть код, который реализует вращение...

Построение графической фигуры с использованием OpenGL (Си)
В общем есть задание на построение графической фигуры с помощью OpenGl : Ромб,...

Создание простой фигуры в 3D-формате, OpenGL и DirectX
Решил написать небольшой FAQ по этой теме:) Создание простой фигуры в...

Opengl, мерцает стенка при вращении фигуры
Сделал вырез на грани, а он мерцает, что не так? P.S. вращать фиругу q z,w x,a...

2
saqef
24 / 27 / 15
Регистрация: 16.04.2017
Сообщений: 436
Записей в блоге: 4
Завершенные тесты: 1
21.08.2017, 16:22  [ТС] #2
Решение
Проблема была в format.setVersion(3,5)
Закоментил и всё заработало.
Почему не знаю.
Пробовал другие значения: если поставить minor больше 2, то не рисует.
Хотя версия стоит и выводиться 4.5.
1
obivan
Падаван С++
419 / 239 / 82
Регистрация: 11.11.2014
Сообщений: 842
Завершенные тесты: 2
22.08.2017, 22:23 #3
saqef, потому что функции glBegin, glEnd, glVertex ... и тот подход который вы юзали был давным давно, сейчас они считаются устаревшими и в версиях 3 и больше применяются шейдеры
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2017, 22:23
Привет! Вот еще темы с решениями:

OpenGL при повороте пропадает часть фигуры
Добрый день, Подскажите пожалуйста в чём проблема? При повороте усекается...

Создаю игру с научным уколоном на C++/opengl. Как подключить openGL и добиться кроссплатформенности
Я читал про opengl - для его инициализации нужно создавать windows - окно. Для...

(2 главы перевода книги доступно) OpenGL Programming Guide, Version 4.3, 8th Edition - OpenGL
Продолжая тему с переводом книги...

Ошибки при подключение opengl, немного не связанные с opengl
#include &lt;windows.h&gt; #include &quot;stdafx.h&quot; #include &lt;gl/gl.h&gt; #include...


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

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

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