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

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

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Direct3D widget  (Прочитано 13401 раз)
ixSci
Гость
« Ответ #15 : Апрель 02, 2009, 10:49 »

я делал просто configure -platform win32-msvc2008
здесь еще нужно отдельный флаг указывать? Если да, то дайте ссыль, пожалуйста, на то какие флаги могут быть, чтобы я не собирал под каждый новаый флаг Улыбающийся
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #16 : Апрель 02, 2009, 11:06 »

Это всеголишь моя догадка. Выполни:

configure -help

В списке возможный параметров для венды будет:

Цитировать
-direct3d .......... Compile in Direct3D support (experimental - see INSTALL for more info)

Вот что говорится в INSTALL:

Цитировать
If you are using the "-direct3d" option, make sure that you have
    the Direct3D SDK installed, and that you have run the
    %DXSDK_DIR%\Utilities\Bin\dx_setenv.cmd command, before attempting
    to run configure.

И что в ассистанте:

Цитировать
The Windows version of Qt also support one additional command line option, if Direct3D support has been compiled into Qt:
-direct3d will make the Direct3D paint engine the default widget paint engine in Qt. This functionality is experimental.

Также смущает вот этот код:

Код
C++ (Qt)
QPaintEngine* paintEngine()
{
   return 0;
}

а именно то, что paintEngine == 0. Если взглянуть на OPenGL реализацию, то создан свой paintEngine, наследник QPaintEngine.

Если закаментить этот код и возвращать paintEngine по умолчанию?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ixSci
Гость
« Ответ #17 : Апрель 02, 2009, 11:10 »

Цитировать
Если закаментить этот код и возвращать paintEngine по умолчанию?
ничего не изменится, я про такой способо вычитал тут
Цитировать
According to the Qt docs, if you want to use GDI or Direct3D on Windows with Qt, you need to:
1) Override QWidget::paintEngine to return NULL
2) Call QWidget::setAttribute(Qt::WA_PaintOnScreen, true)

Сейчас попробую пересобрать, спасибо за совет.
Записан
ixSci
Гость
« Ответ #18 : Апрель 02, 2009, 20:38 »

виват! Проблема решена, пересобрал Qt, запускаю приложение с ключом -direct3d + убрал обнуляющий paintEngine. Теперь все работает как надо.
pastor, огромное тебе спасибо. Так же спасибо остальным за попытку помочь.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #19 : Апрель 02, 2009, 21:16 »

Незачто!

Интересно бы было офрмить это все в статью и выложить на вики. Улыбающийся
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
ixSci
Гость
« Ответ #20 : Апрель 02, 2009, 21:25 »

ок, подретуширую чуть чуть и, думаю, на выходных выложу.
Записан
ixSci
Гость
« Ответ #21 : Апрель 04, 2009, 13:33 »

http://prog.org.ru/wiki/index.php?title=QDirect3DWidget
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #22 : Апрель 04, 2009, 14:07 »

Отлично! Спасибо за статью!

У меня есть небольшой коментарий к коду:

Код
C++ (Qt)
void Direct3DWidget::paintEvent(QPaintEvent *pEvent)
{
//For suppressing warning about the unused variable
sizeof(pEvent);
Rendering();
}

В Qt есть специальный макрос Q_UNUSED(), т.е. код можно переписать так:

Код
C++ (Qt)
void Direct3DWidget::paintEvent(QPaintEvent *pEvent)
{
//For suppressing warning about the unused variable
Q_UNUSED(pEvent);
Rendering();
}
« Последнее редактирование: Апрель 04, 2009, 14:10 от pastor » Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Khs
Гость
« Ответ #23 : Апрель 04, 2009, 14:16 »

Ишо б скрин приложить экзампла, для полного счастья Улыбающийся
Записан
ixSci
Гость
« Ответ #24 : Апрель 04, 2009, 14:36 »

код поправил, ссылку на скрин добавил. Как туда картинку вставить я так и не понял Грустный
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #25 : Апрель 04, 2009, 14:59 »

В  вики на данный момент проблема с картинками. Решим проблему  немного позже
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


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