Войти
ПрограммированиеФорумОбщее

Разработка под VR

Advanced: Тема повышенной сложности или важная.

Страницы: 1 2 324 25 Следующая »
#0
(Правка: 27 мая 2021, 7:20) 19:12, 19 янв. 2021

VR

Удивительно, что на нашем форуме еще нет этой темы.

VR-технологии уже достаточно распространены, чтобы начать вести разработку VR-игр и прочих VR-приложений. Кто уже? На чём ведёте разработку, какие успехи?

Полезные ссылки

Совместное тестирование игр на разном VR-оборудовании: https://gamedev.ru/code/forum/?id=261050
Сервер VR RUS в Дискороде: http://ruvr.su/

#1
20:17, 19 янв. 2021

romanshuvalov
> GetProjectionMatrix() вызывает Access Violation (0xC0000005)
открыть исходники openVR и посмотреть что в этих методах может быть недоступным.

#2
20:30, 19 янв. 2021

cyberpunk2077
> открыть исходники openVR и посмотреть что в этих методах может быть недоступным.
Открыты только заголовки, реализации нет: https://github.com/ValveSoftware/openvr/search?q=GetProjectionMatrix

#3
20:32, 19 янв. 2021

cyberpunk2077
> открыть исходники openVR и посмотреть что в этих методах может быть
> недоступным.
ничего там нет, это интерфейс не более, вся реализация в библиотеке исходников которой нет.
romanshuvalov
ты либы собирал сам или скачал с гита те что есть?

#4
20:34, 19 янв. 2021

cyberpunk2077
> открыть исходники openVR
Он не на столько open ))

#5
20:37, 19 янв. 2021

romanshuvalov
Это чистая виртуальная функция:

virtual HmdMatrix44_t GetProjectionMatrix( EVREye eEye, float fNearZ, float fFarZ ) = 0;
#6
20:41, 19 янв. 2021

Aroch
Ты же сам написал что исходников реализации нет, поэтому я скачал с гита собранные либы, потому что больше их взять неоткуда. Пробовал ради эксперимента подменить ДЛЛшку на ту, которая лежит в steamapps/common/SteamVR, она там вроде другая. Не помогло.

#7
20:43, 19 янв. 2021

cyberpunk2077
> Это чистая виртуальная функция:
Они там все такие. В заголовках только интерфейс с виртуальными функциями. А при инициализации создаётся объект "неизвестного класса", наследованный от этого интерфейса. Адрес метода я кстати проверял - ненулевой. И все другие методы работают, возвращают корректные значения.

#8
21:09, 19 янв. 2021

romanshuvalov
> Ты же сам написал что исходников реализации нет, поэтому я скачал с гита
> собранные либы, потому что больше их взять неоткуда. Пробовал ради эксперимента
> подменить ДЛЛшку на ту, которая лежит в steamapps/common/SteamVR, она там вроде
> другая. Не помогло.
dll, но dll и lib не одно и тоже, и судя по тому что у них для винды именно .lib то собирали они студийным компилятором, а у тебя mingw, собери и получи на выходе .a который и подключишь линкеру.

#9
(Правка: 21:14) 21:12, 19 янв. 2021

Aroch
> собирали они студийным компилятором, а у тебя mingw, собери и получи на выходе .a
Как собрать, если нет исходников? Студия умеет собирать .a для последующего использования в mingw? Или я не так тебя понял.

upd.: Нарыл https://stackoverflow.com/questions/11793370/how-can-i-convert-a-… -to-a-mingw-a - буду пробовать, хорошая идея (нижний ответ про dlltool)

#10
(Правка: 21:25) 21:23, 19 янв. 2021

romanshuvalov
> Как собрать, если нет исходников?
есть там исходники, тебе надо собрать .a для динамического связывания и всё. А саму dll возьмешь с папки bin.

https://github.com/ValveSoftware/openvr/blob/master/src/README

#11
22:56, 19 янв. 2021

Aroch
> а у тебя mingw
хе-хе
romanshuvalov
использовать студийные lib, если пользуешься mingw - это безнадежное дело.

#12
0:00, 20 янв. 2021

Для OpenVR есть С-интерфейс, так что можно динамически грузить dll без всяких либ, это удобно если у пользователя не установлен SteamVR и вообще VR опционально идет.

#13
3:08, 20 янв. 2021

А разве mingw не поддерживает *.lib? Я когда-то подключал какую-то M$ библиотеку к mingw проекту и все работало (возможно, только, что я тупо переименовал ее в *.a, уже не помню).

#14
(Правка: 3:28) 3:27, 20 янв. 2021

Ок, я понял, линковать надо через .a. Но угадайте что?

Я совершенно случайно обнаружил в пакетах mingw пакет openvr, датированный, правда, 2019 годом, но правильно собранный и с линковочным .dll.a в комплекте. И с ним ошибка точно та же.

Вообще судя по бэктрейсу ошибка вообще происходит не у меня:

> backtrace
#0  0x00007ffb447f9f98 in xrNegotiateLoaderRuntimeInterface () from C:\Program Files (x86)\Steam\steamapps\common\SteamVR\bin\vrclient_x64.dll
#1  0x0000000000407613 in CMainApplication::GetHMDMatrixProjectionEye (this=0x1254550, nEye=vr::Eye_Left) at C:\develop\tests\vrsample1\main.cpp:1721
#2  0x0000000000000000 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

а в vrclient_x64.dll самого Стима. Я как бы вообще не при делах. И в этом случае даже

> С-интерфейс, так что можно динамически грузить dll без всяких ли
не спасёт.

Страницы: 1 2 324 25 Следующая »
ПрограммированиеФорумОбщее