Войти
ПрограммированиеФорумГрафика

Qt и OpenGL

Страницы: 1 2 3 Следующая »
#0
3:42, 27 мар. 2018

Подскажите, пожалуйста, а то я долгое время хожу вокруг да около Qt :)))
В Builder можно было назначить контекст как основному окну, так и Панели, так как оба выдают Handle, причём на основное окно можно было завести временный контекст, а на Панель постоянный.
Как с этим обстоит дело в Qt? Можете дать ссылку на простой урок, позволяющий ручками подключить к Qt-компоненту контекст OpenGL???


#1
6:28, 27 мар. 2018

Daniil Petrov
Для начало надо определиться, о каком Qt идёт речь - древнем QtWidgets или модном QtQuick/QML (последний рисуется через OpenGL/OpenGL ES, поэтому OpenGL контекст там уже есть).

#2
6:36, 27 мар. 2018

Daniil Petrov
Там же невероятно легкая документация и куча примеров. А класс для OpenGL вот: QOpenGLWidget

#3
6:43, 27 мар. 2018

gkv311
> Для начало надо определиться, о каком Qt идёт речь - древнем QtWidgets или модном QtQuick/QML
Сам не знаю, смотрю на Qt, как баран на новые ворота :))) Qt Creator + компилятор VC++, мне нужно приложение Windows Forms на C++ без костылей и танцев с бубном.

TheLightWay
> А класс для OpenGL вот: QOpenGLWidget
Что это и как мне к этому подцепить библиотеку GLEW? Мне нужен компонент типа TPanel в Builder C++, имеющий свой HWND, чтоб на него вывести вручную созданный контекст OGL.

#4
7:16, 27 мар. 2018

TheLightWay
> Qt Creator + компилятор VC++, мне нужно приложение Windows Forms на C++ без
> костылей и танцев с бубном.
В Microsoft Visual Studio в меню Tools > Extensions and Updates > Online > Visual Studio Marketplace > Ищи "Qt Visual Studio Tools"
Затем жмешь download.
> Что это и как мне к этому подцепить библиотеку GLEW?
Она там не нужна. В Qt есть свой загрузчик : QOpenGLFunctions и QOpenGLExtraFunctions
> Но что если мой код привязан к GLEW?
Переписывать

#5
7:31, 27 мар. 2018

TheLightWay
> Microsoft Visual Studio в меню Tools > Extensions and Updates > Online > Visual Studio Marketplace >
Ни хрена себе! Там даже ZX Spectrum IDE есть! Но я не извращенец, чтоб щас чё-то под Спектрум делать :)))
А на счёт QOpenGLFunctions и QOpenGLExtraFunctions, судя по всему, придётся разбираться :)

#6
8:45, 27 мар. 2018

Полистал ссыль из поста №2 - Qt позволяет рисовать и простыми OGL функциями, только не забывать включать Q-контекст и помнить, что Qt всегда рисует offscreen.
Daniil Petrov
> Мне нужен компонент типа TPanel в Builder C++, имеющий свой HWND
Так как Qt кроссплатформенная хрень, то в ней (как и в Borland Builder) свой тип окна, свой тип идентификатора окна. В реализации для Windows HWND зарыто где-то глубоко и, как правило, пользователю нет нужды к нему обращаться. Всё делается через средства самой Qt.

#7
8:58, 27 мар. 2018

PA3UJIb
> Так как Qt кроссплатформенная хрень, то в ней (как и в Borland Builder) свой
> тип окна, свой тип идентификатора окна. В реализации для Windows HWND зарыто
> где-то глубоко и, как правило, пользователю нет нужды к нему обращаться. Всё
> делается через средства самой Qt.
Дожили :))) нет ничего нормального для написания приложений Windows Forms на C++.
У Builder там и правда какая-то помесь дворняги с овчаркой = жалкое подобие C++.
Майкрософт тоже, чтоб пропихать своё говно в виде C# и .NET, отрубили это дело.
Я не спорю, есть любители-извращенцы всяких там Delphi, C# и Visual Basic, но я привык к нормальным ассемблерным языкам :)

#8
9:08, 27 мар. 2018

Daniil Petrov
> Как с этим обстоит дело в Qt?

Если кроссплатформенность тебя не интересует, то под Windows всё это в Qt обстоит как с любым GUI фреймворком, для любого виджета на экране можно получить HWND и далее использовать все (в том числе грязные) хаки WinAPI

#9
9:13, 27 мар. 2018

TheLightWay
> В Microsoft Visual Studio в меню Tools > Extensions and Updates > Online >
> Visual Studio Marketplace > Ищи "Qt Visual Studio Tools"
В общем, не стоит ТС тебе качать аддон для студии под Qt, он далеко не идеально работает с Qt и уж тем более с QML, уж поверь мне (тому, кто весь софт на Qt пишет). Нормальные люди пишут под Qt в IDE самой Qt - то есть в QtCreator, которая входит в пакет установки. Вообще, это легковесная IDE, которая мне полностью заменила VisualStudio, разве что отладки GPU нет, но для этих целей можно проект Qt портануть в студию, это не сложно (в случае nVidia, а для AMD есть отдельная CodeXL).

Несколько слов вначале: Qt - это просто огромный фреймворк, упрощающий разработку кроссплатформенного софта (ну как тебе сказать - огромная библиотека, точнее библиотеки), в его состав не входят ни отладчик, ни компилятор - их нужно устанавливать отдельно под каждую ОС. (если у тебя не винда, найди нужный установщик Qt из списка здесь https://www1.qt.io/offline-installers/)

И так, для старта разработки на Qt тебе нужно (в случае вынды)
1. Установить Windows SDK, что бы появился отладчик: https://developer.microsoft.com/ru-ru/windows/downloads/windows-10-sdk
2. Установить VisualStudio 2017, что бы был компилятор (если конечно она ещё не установлена). Как вариаинт, можно использовать под Windows вместо студийного компилятор - minGW, но я крайне не рекомендую тебе этого делать.
3. Установить Qt из оффлайн установщика https://www1.qt.io/offline-installers/http://download.qt.io/offic… 86-5.10.1.exe (не обязательно во время установки регистрироваться, там снизу справа есть кнопка "Skip" :) )
4. Всё, после этих манипуляций у тебя на рабочей столе появится значок QtCreator, запускаешь его и работаешь (visual studio тебе не нужна), он автоматом всё настроит. Открываешь IDE, жмёшь на примеры, выбираешь любой, открываешь, жмёшь на "собрать" и запускаешь, радуясь жизни :)

+ Показать

Как проделаешь всё это, установив Qt, пиши, я тебе отдельно расскажу, как работать с OpenGL на Qt.

#10
9:14, 27 мар. 2018

Daniil Petrov
Windows Forms - это часть .NET Framework для написания окошек на C#. Но контролы в нём имеют свой hWnd, и его можно даже получить через свойство Handle.

В Qt хэндл можно получить методом winId().

#11
9:28, 27 мар. 2018

$tatic
> Windows Forms - это часть .NET Framework для написания окошек на C#.
Та ты шо. А WPF для чего?

Кстати, кто подскажет как создать SDL2 + OpenGL внутри WPF через SDL_CreateWindowFrom или типа того, в честь того я выпью. Воды или лимонада там.
#12
9:41, 27 мар. 2018

-=MASTER=-
> В общем, не стоит ТС тебе качать аддон для студии под Qt, он далеко не идеально
> работает с Qt и уж тем более с QML, уж поверь мне (тому, кто весь софт на Qt
> пишет).
Он сам спросил а лично я использую вообще CMake так как QtCreator мне не нравится.
$tatic
> В Qt хэндл можно получить методом winId().
Там не все окна нативные да и сам Qt не даст рисовать.
Daniil Petrov
> Майкрософт тоже, чтоб пропихать своё говно в виде C# и .NET, отрубили это дело.
Ты подросток что-ли ?

#13
9:42, 27 мар. 2018

Кстати, в последних версиях Qt можно использовать разные низкоуровневые рендеры для QML, в том числе OpenGL, DirectX, Vukan.
А по воводу вулкана, так там вообще теперь появилось это https://doc.qt.io/qt-5.10/qvulkanwindow.html
Вот пример: https://doc.qt.io/qt-5.10/qtgui-hellovulkanwidget-example.html

#14
11:37, 27 мар. 2018

Похоже, что всё таки придётся мутить свой GUI и не заморачиваться на редакторах окон. Сложно будет, но в итоге лучше, плюс для игр будет готовый GUI.
Qt вообще муть какая-то, да и кроссплатформенность мне не нужна :) а если придираться к мелочам, то в нём нет даже Open-Save-диалогов, которые есть в том же Билдере.

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.