Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
FCommander
Респект C++
22 / 32 / 14
Регистрация: 11.06.2015
Сообщений: 384
#1

DirectX в Qt

21.10.2015, 20:08. Просмотров 1007. Ответов 9
Метки нет (Все метки)

Здравствуйте. Как иниц. DirectX в Qt??? В Инете не нашел ничего полезного. Все для WinAPI. А я в этот WinAPI после такого чуда как Qt даже и возвращаться не хочу.
Я просто хочу написать эмулятор наведения ракет, там я QtWidgets, Qwt, DirectX использовать буду. И не знаю программа ли это будет или игрушка. Наверное игрушка.
Планировал изучить OpenGL, но там ни удобного ввода типа DirectInput нет, ни удобного манипулирования объектами типа Direct Retained Mod нет, текстуры только bmp читает, а DirectX таже tga. Поэтому еще раз:
"Как работать с Direct3D в Qt?".

Добавлено через 24 минуты
Файлы и библиоьеки я подключил. Мне только надо вместо HWND QWidget использовать. Чтобы QWidget мог рендерить DirectX. Direct Input, Direct Retained Mode чтобы QWidget рендерил.

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

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2015, 20:08
Ответы с готовыми решениями:

Qt графика на DirectX 11 ?
Ну собственно два подвопроса: 1. Можно ли под Windows7 рисовать 3д графику на...

Добавить DirectX
подскажите где скачать, куда кинуть, и как подключить(include) DirectX для Ot...

Совместное использование Qt и Directx 9
В общем вопрос можно ли подключить Directx 9 в Qt Creator ,если можно то...

Как получить HWND окна (виджета) в Qt для передачи его в DirectX ?
Салют! Есть ли возможность в кьюте получить этот злощастный HWND виндовый для...

Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые поддерживают DirectX 9?
Если у меня видяха поддерживает DirectX 10, то пойдут ли те игры, которые...

9
Pancir
57 / 44 / 11
Регистрация: 16.09.2014
Сообщений: 124
22.10.2015, 10:40 #2
В QT Help наверное очень сложно набрать слово DirectX и почитать правда?

On Windows, Qt can be configured with the system OpenGL or with ANGLE. By default, configure uses ANGLE...
ANGLE: This library converts OpenGL ES 2.0 API calls to DirectX 9...


Цитата Сообщение от FCommander Посмотреть сообщение
текстуры только bmp читает
Смешно, правда.

Цитата Сообщение от FCommander Посмотреть сообщение
Direct Retained Mod
Не знаю, что это, но сомневаюсь, что в openGL без этого никак.

По всем остальным пунктам в самом QT уже должны быть все нужные вам средства.

QT это framework который вам дает высокоуровневое представление многих вещей, фактически вы можете писать свою игру только QT средствами. Если вы хотите просто создать главное окно и потом все делать ручками напрямую, то проще создать такое окно winAPI средствами все равно directX не кроссплатформенный. Ну а если вы уже решили использовать QT так и используйте его.
0
FCommander
Респект C++
22 / 32 / 14
Регистрация: 11.06.2015
Сообщений: 384
22.10.2015, 17:41  [ТС] #3
Кросчплатформенность этой игры мне не нужна. Я для себя её пишу. Qwt в WinAPI нету. В WinAPI очень сложно будет это сделать. Пытался сделать:
C++
1
HWND(widget)
Но сразу на 99% был не уверен.
0
Pancir
57 / 44 / 11
Регистрация: 16.09.2014
Сообщений: 124
22.10.2015, 17:53 #4
Цитата Сообщение от FCommander Посмотреть сообщение
Пытался сделать:
Сразу видно, что вы вообще не понимаете, что делаете, хотя по первому посту это тоже видно...
Скажите цель-то всего этого какая? научиться какой-то технологии? сделать игру и забыть про программирование? научиться ооп? изучить QT ? что?
Просто от цели сильно зависит, что и как делать дальше.
Самое простое решение - это просто писать все на QT не вдаваясь в такие подробности как directX или openGL т.е вам вообще об их существовании не нужно знать. Но опять же все зависит от цели, если у вас цель изучить directX очевидно, что это решение вам не подойдет.
0
FCommander
Респект C++
22 / 32 / 14
Регистрация: 11.06.2015
Сообщений: 384
22.10.2015, 18:21  [ТС] #5
Че ругаетесь??? Я просто вопрос задал. Да не хочу я на чистом Qt или на OpenGL делать. По моему мнению, OpenGL - фуфло. Ни одна компьютерная игра на OpenGL не написана. Может быть и написаны как Alawar игры. Но ничего собонного я в таких фуфловых игр не вижу. Ну хорошо, давайте попробуем подумать, сделаю на это на чистом Qt(трёхмерную игру), на чем, на QGraphicsScene. Насколько я знаю, в Qt работа с 2D есть. А с 3D - OpenGL. А мне DirectX нужен. Так что, еще раз повтопяю:
Цитата Сообщение от FCommander
Как иниц. DirectX в Qt??? В Инете не нашел ничего полезного. Все для WinAPI. А я в этот WinAPI после такого чуда как Qt даже и возвращаться не хочу.
Цитата Сообщение от FCommander
Файлы и библиотеки я подключил. Мне только надо вместо HWND QWidget использовать. Чтобы QWidget мог рендерить DirectX. Direct Input, Direct Retained Mode чтобы QWidget рендерил.
Конечно, конвертировать HWND в QWidget - НЕВОЗМОЖНО!!! Но как иначе???
0
Pancir
57 / 44 / 11
Регистрация: 16.09.2014
Сообщений: 124
22.10.2015, 18:39 #6
Цитата Сообщение от FCommander Посмотреть сообщение
Че ругаетесь???
Даже не думал, ваши проблемы != мои проблемы.

В Google -> "запустить directX в Qwidget" выдает результаты которые можно взять за отправную точку для экскрементов.
Например:
http://habrahabr.ru/post/62051/
http://www.gamedev.ru/code/forum/?id=90538
давность 6 лет, неизвестно взлетит или нет на современных версиях QT.
Пробуйте.
0
FCommander
Респект C++
22 / 32 / 14
Регистрация: 11.06.2015
Сообщений: 384
22.10.2015, 18:53  [ТС] #7
Спасибо.
0
Pancir
22.10.2015, 18:57
  #8

Не по теме:

Цитата Сообщение от Pancir Посмотреть сообщение
точку для экскрементов.
Только сейчас заметил после вашего ответа, что не посмотрел при ошибке, замену слову эксперимент , а оно вон оказывается на, что заменило. :)

0
DrOffset
7590 / 4559 / 1105
Регистрация: 30.01.2014
Сообщений: 7,421
22.10.2015, 19:03 #9
Цитата Сообщение от FCommander Посмотреть сообщение
Мне только надо вместо HWND QWidget использовать.
У QWidget можно получить его HWND (правда это сделает программу непереносимой), чтобы потом его использовать для передачи в DX API.
Способ сделать это описан здесь: http://lists.qt-project.org/pipermail/interest/2013-June/007650.html
0
FCommander
Респект C++
22 / 32 / 14
Регистрация: 11.06.2015
Сообщений: 384
24.10.2015, 00:58  [ТС] #10
Я . По аналогии понял - "Экспериментов".

Добавлено через 18 минут
Теперь проблема. Как ставлю m_pd3dDevice->CreateDevice(...), выходит пустое окно и ошибка программы:
"Ожидание отклика программы" или "Хакрыть программу".

Добавлено через 47 секунд
Как убираю CreateDevice, Все нормально. Как думаете, в чём ошибка???

Добавлено через 7 минут
Вероятно, там как в Qt: ... = new IDiRect3DDevice9, типа того. Но не выходит. Да и вообще это неправильно.

Добавлено через 11 секунд
Вероятно, там как в Qt: ... = new IDiRect3DDevice9, типа того. Но не выходит. Да и вообще это неправильно.

Добавлено через 53 минуты
Нашел: QPaintEngine:irect3D, про это никакой инфы.

Добавлено через 58 минут
Pancir. Вы правы, это не работает на современных версиях Qt.

Добавлено через 51 минуту
Уже полтора часа мучаюсь - та же проблема.

Добавлено через 40 минут
Только ни это. Дело ни только в CreateDevice, но и в LPDIRECT3DDEVICE9. Работает только D3DPRESENT_PARAMETERS без глюков.

Добавлено через 2 часа 14 минут
Ура!!! Подключил. Вот проблемы были:
1)Линковские библиотеки были с MinGW от DevC++, взял с другого MinGW и все функции Direct3D заработали
2)Рендеринг шел посекундно. Вставил код таймера из habrahabr - и заработало.
Сейчас буду 3D графику, Direct Input и Direct Retained Mode пробовать.

Добавлено через 10 часов 39 минут
Теперь ещё проблема: Функции не работают. Как ввожу типа D3DXMatrixLookAtLH, D3DXToRadian, D3DXMatrixPerspecriveFovLH, программа вообще не запускается. Пишет, что завершился крахом. Что делать???

Добавлено через 11 минут
Пробовал ввиде:
C++ (Qt)
1
2
3
Direct3DWidget::D3DXMatrixLookAtLH()
{
}
Тогда вообще ничего не рисует.

Добавлено через 5 минут
Может быть Direct3D может только рендерит без рисования на Qt?

Добавлено через 12 часов 11 минут
Всё. Слава Богу!!! Теперь всё отлично. Рисует. Скорость рендеринга можно с пом. таймера менять. Вот какие проблемы были, верней была.
ОЧЕНЬ СТАРЫЙ MinGW!!!. Хорошо, что был ещё один от Dev-C++. MinGW64. Я переустановил Qt с новым MinGW. Ну ладно, закрыли тему. Спасибо всем, кто уделил свое время на мою помощь.

Добавлено через 2 минуты
Единственный минус - полноэкранный режим. Он не поддерживается в Qt. Ну и ладно. Для хороших игр я WinAPI использовать буду. А это для себя.

Добавлено через 7 минут
Думаю, будет лучше, если я скачаю DirectX SDK, там уже всё готово, и все инструменты есть. И там не надо руками из MinGW доставать.
0
24.10.2015, 00:58
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2015, 00:58

XNA является дополнением DirectX или это полноценная альтернатива DirectX не зависящая от него
Предлагаю в этой теме задавать общие вопросы по XNA. Может вопросы покажутся...

Откат DirectX на более раннюю версию. Управление DirectX
Доброго времени суток. Как откатить DirectX11 до DirectX10 на Win 7 x64? А...

Реализовать DirectX. Или разобраться в том, как программисту наладить работу DirectX у клиента под Windows
Здравствуйте Программисты. Заплачу за решение моего вопроса! 25-50 тыс....


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

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

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