Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DirectX + PhysX, реально ли это? 
:(
    Опции темы
dehax
  Дата 22.8.2011, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Здравствуйте!
Реально ли совместить в одном проекте для Visual C++ DirectX (3D) и PhysX ??? Например, PhysX - создаёт физику и обрабатывает эффекты, а Direct3D - это всё выводит на экран. (А то в SDK PhysX'a есть примеры работы только с OpenGL, но он мне не подходит).
Спасибо!
PM   Вверх
KaraKum
Дата 23.8.2011, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: нет
Всего: 1



Библиотека PhysX и создана для того чтобы интегрировать её с графической - сама-по-себе PhysX не имеет средств для вывода.
В общем смысле каждый этап симуляции выглядит так: 
1 - шаг симуляции физического мира
2 - получение матриц/кватернионов вращения объектов и их координат
3 - поворот и перемещение всех графических объектов согласно этим полученным значениям их физических эквивалентов

В примерах использована OpenGL потому что это открытая (бесплатная) библиотека.
 smile 
PM MAIL WWW   Вверх
dehax
  Дата 27.8.2011, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Вот только нашёл PhysXViewer и написан он на DirectX DXUT. Но чего-то не могу ничего толкового по нём найти (книги, уроки). Я так понимаю, DXUT - аналог GLUT, но только для DirectX ? Получается нужно учить DXUT ! Если кто-то знаком с ним, прошу, дайте, пожалуйста, ссылки по DXUT для DirectX 9.

З.Ы. Где-то читал, что что-то несовместимо между DirectX 9 DXUT и PhysX, то ли матрицы преобразования...? Буду тоже продолжать искать инфу. Как кто-то говорил, лучший учебник для программиста - исходный код. Если у кого-то есть исходники PhysX + DXUT, то дайте, пожалуйста, тоже. У меня на PhysX SDK 2.8.1 даже этот PhysXViewer не компилируется.
PM   Вверх
BEOWOLF
Дата 27.8.2011, 21:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.8.2007

Репутация: нет
Всего: 2



dehax, при установке DirectX SDK, устанавливаются также примеры работы под директ. Все эти примеры используют тот самый DXUT - простой движок с открытым исходным кодом, исходники есть там же. Описание этих примеров есть в хэлпе к DirectX SDK. Кстати, очень неплохой и удобный движок, его легко использовать, и на его основе разрослись движки некоторых игр. А вообще DirectX & PhysX - это лучший выбор графики и физики. Скачать DirectX SDK можно с сайта микрософта, версия за август 2009 - последняя, поддерживающая XP+SP2, те что выше - под SP3 и семёрку. Ещё для написания сценариев игр могу посоветовать Lua: при рендеринге каждого фрейма вызываешь луа-функцию, которая возобновляет работу луа-потоков, выполняющих какие-то действия по логике игры.
PM MAIL   Вверх
BorisVorontsov
Дата 29.8.2011, 18:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 1
Всего: 10



Цитата(BEOWOLF @  27.8.2011,  21:42 Найти цитируемый пост)
 А вообще DirectX & PhysX - это лучший выбор графики и физики

Это очень спорное утверждение. Не буду говорить по поводу DirectX, тут пусть каждый решает для себя сам, а вот PhysX имеет один серьезный объективный недостаток: он работает только на карточках nv. В противовес ему разработан открытый движок Bullet, благодаря AMD теперь использующий открытый стандарт OpenCL, одинаково обрабатываемый как nv, так и ATI-карточками. Но если не требуется физика жидкостей или физика мягких тел, вполне можно обойтись процессорным Havok'ом.


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
dehax
Дата 29.8.2011, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



BEOWOLFBorisVorontsov, спасибо за информацию!
Цитата(BEOWOLF @  27.8.2011,  20:42 Найти цитируемый пост)
А вообще DirectX & PhysX - это лучший выбор графики и физики

я тоже так думал, пока не прочитал следующий пост:
Цитата(BorisVorontsov @  29.8.2011,  17:24 Найти цитируемый пост)
PhysX имеет один серьезный объективный недостаток: он работает только на карточках nv

этого я не знал! у меня стоит видеокарта NV и с такими проблемами не сталкивался. Полазил в Инете и нарыл кучу информации, что уже некоторые карты ATI (напр. Radeon) поддерживают PhysX, думаю в будущем ATI будет выпускать все карты с поддержкой PhysX.
А пока что у меня возник такой вопрос: можно ли в одной игре использовать и PhysX, и Bullet ? (хотя думаю, что нет). Или же можно, используя PhysX сделать так, чтобы если есть аппаратная поддержка PhysX, то физику расчитывает GPU, а если нет - то CPU ???

P.S. Я играл в GTA IV (Bullet) и в MassEffect 2 (PhysX). И там, и там физика очень понравилась!
P.P.S. Lua понравился, оказывается с ним много игр было написано!
P.P.P.S. BEOWOLFBorisVorontsov, а вы писали (или пробовали писать) игры с физикой? Если да, то что использовали?

Это сообщение отредактировал(а) dehax - 29.8.2011, 20:39
PM   Вверх
BorisVorontsov
Дата 29.8.2011, 23:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 1
Всего: 10



Цитата(dehax @  29.8.2011,  20:38 Найти цитируемый пост)
Полазил в Инете и нарыл кучу информации, что уже некоторые карты ATI (напр. Radeon) поддерживают PhysX

Никакие карты ATI не поддерживают PhysX, потому что он работает на CUDA, проприетарной технологии nv.

Цитата(dehax @  29.8.2011,  20:38 Найти цитируемый пост)
можно ли в одной игре использовать и PhysX, и Bullet ? (хотя думаю, что нет).

Одновременно? Зачем?

Цитата(dehax @  29.8.2011,  20:38 Найти цитируемый пост)
Или же можно, используя PhysX сделать так, чтобы если есть аппаратная поддержка PhysX, то физику расчитывает GPU, а если нет - то CPU ???

Можно, конечно. Но CPU не способен обсчитать физику сложнее физики твердых тел с более-менее приемлемой производительностью

Цитата(dehax @  29.8.2011,  20:38 Найти цитируемый пост)
И там, и там физика очень понравилась!

И там и там примитивная физика твердых тел


Цитата(dehax @  29.8.2011,  20:38 Найти цитируемый пост)
BorisVorontsov, а вы писали (или пробовали писать) игры с физикой?

Писал, но использовал собственную физику


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
dehax
Дата 30.8.2011, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Познакомился с Bullet, посмотрел демки и уже хотел перейти с PhysX на него, но как посмотрел исходники примеров... smile 
Это называется, да здравствует Glut ! smile К сожалению, мой уровень, как программиста не позволяет написать, что-нибудь, используя этот движок. А жаль, он всё таки мощный и эффективный в плане производительности на данный момент, это я уже понял. Буду надеяться, что ATI что-нибудь придумает с PhysX.

BorisVorontsov, спасибо ещё раз!
PM   Вверх
BEOWOLF
Дата 30.8.2011, 01:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.8.2007

Репутация: нет
Всего: 2



Нужно уточнить: у NVidea есть аппаратная поддержка PhysX, и в этом огромное преимущество. Если видеокарта без аппаратной поддержки, то есть ниже 9800, то PhysX будет работать точно также, как и все остальные физические движки - чисто программно ;) Вообще PhysX разрабатывается давно, и раньше распространялся под брендом Ageia, они даже выпускали никому неизвестные физические карты под этот движок, и в это время назревал вопрос интеграции физики на видеокарты. Всё изменилось пару лет назад, когда Ageia была выкуплена NV. Раньше использовал движок от newtondynamics - отличный движок для эмуляции физики сплошных твёрдых тел. На сегодняшний день подобные движки использовать можно только в простых задачах, там заметна большая нагрузка на процессор при попытке рендеринга на больших fps.
PM MAIL   Вверх
BorisVorontsov
Дата 30.8.2011, 11:33 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 1
Всего: 10



Цитата(dehax @  30.8.2011,  00:47 Найти цитируемый пост)
К сожалению, мой уровень, как программиста не позволяет написать, что-нибудь, используя этот движок.

А ты уверен, что тебе нужен именно такой комбайн, как Bullet или PhysX? Подозреваю, что для твоих задач хватит Intel'овского Havok'а

Это сообщение отредактировал(а) BorisVorontsov - 30.8.2011, 21:48


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
dehax
  Дата 30.8.2011, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Я всё же остановлюсь на DirectX9 DXUT + PhysX. Думаю в серьёзно заняться разработкой игр, так что буду учиться на примерах, набираться опыта.
Сейчас хотел в DXUT для Direct3D 9 создать примитив Box. В DXUT\Optional есть DXUTShape.cpp, в котором есть функция:
Код

HRESULT WINAPI DXUTCreateBox( ID3D10Device* pDevice, float fWidth, float fHeight, float fDepth, ID3DX10Mesh** ppMesh )

но используется только ID3D10Device, а мне нужно для 9, а не 10 версии.
Я так понимаю, придётся вручную писать функцию аналог, или импортировать из *.x (X-mesh) ?
PM   Вверх
BorisVorontsov
Дата 30.8.2011, 21:56 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Thinker
**


Профиль
Группа: Комодератор
Сообщений: 714
Регистрация: 3.11.2005
Где: Молдавия, г. Киши нёв

Репутация: 1
Всего: 10



Цитата(dehax @  30.8.2011,  21:26 Найти цитируемый пост)
Я всё же остановлюсь на DirectX9 DXUT + PhysX

Если уж решил остановиться на PhysX, то учти работу своей программы на системах с видеокартами ATI/AMD. И в перспективе PhysX вряд ли на них заработает, для этого нет никаких предпосылок

Цитата(dehax @  30.8.2011,  21:26 Найти цитируемый пост)
но используется только ID3D10Device, а мне нужно для 9, а не 10 версии.

Функция просто оборачивает низкоуровневую MakeBox, оперирующую буфером вершин. Ты можешь задействовать её непосредственно


--------------------
[code=cpp]
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;
[/code]
PM MAIL ICQ GTalk   Вверх
dehax
  Дата 30.8.2011, 23:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Цитата(BorisVorontsov @  30.8.2011,  20:56 Найти цитируемый пост)
учти работу своей программы на системах с видеокартами ATI/AMD

то есть, если есть карта NVidia, то нужно сделать "главным" GPU, а если нет - CPU, или это всё само будет обрабатываться? (мне кажется, что само)
Да, и если главным будет CPU, то можно будет как-нибудь это проверить, чтобы вообще тогда отключить физику, которая сложнее физики твёрдых тел, а будет просчитываться только остальная физика?
PM   Вверх
BEOWOLF
Дата 1.9.2011, 06:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 24.8.2007

Репутация: нет
Всего: 2



Можно работать и с 10-м и 9-м директиксом в одном коде, вобщем-то DXUT так и делает... Что касается физики, то например движок Newton представляет собой только одну DLL, экспортирующую функции для расчётов, PhysX - устанавливает ещё драйвера, работающие или не работающие с железом. Существует также возможность установить 2 видеокарты от NV по технологии SLI, так, чтоб одна занималась только физикой, другая только графикой. Кстати, это ещё даст возможность подключения больше 2 мониторов... А вообще при разработке больше времени тратится на графику и логику игры, а физические модели - значительно проще графических мешей.
PM MAIL   Вверх
dehax
  Дата 3.9.2011, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 5.1.2011

Репутация: нет
Всего: 1



Нашёл ещё один учебник "Франк Луна - Введение в программирование трехмерных игр с DirectX9". И там познакомился с функцией:
Код

HRESULT D3DXCreateTeapot(
     LPDIRECT3DDEVICE9 pDevice,
     LPD3DXMESH* ppMesh,
     LPD3DXBUFFER* ppAdjacency
);

В примере SimpleSample (DXUT) я использовал эту функцию. Но вместо изображения чайника получил непонятно что:
user posted image
Почему так получается?
P.S. Когда использовал эту функцию в обычном примере (без DXUT), то получался чайник.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




[ Время генерации скрипта: 0.1504 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.