ScriptDragon と協力して、HTC Vive 機能を OpenVR を使用して Skyrim に取り込もうとしています。
私が働いているもの。エラーが返されず、ヘッドセット オブジェクトへのポインターが null ではないため、ヘッドセットを初期化できます。ゲームに入ると、vive ライトが赤から緑に変わります。
働く
void InitHMD(vr::IVRSystem* hmd)
{
vr::EVRInitError eError = vr::VRInitError_None;
hmd = vr::VR_Init(&eError, vr::VRApplication_Other);
if (eError != vr::VRInitError_None)
{
PrintNote("Error: %s", eError);
}
else
{
PrintNote("HMD succesfully initialized");
}
//extra chech for my own sanity
if (hmd == nullptr)
{
PrintNote("NULL POINTER HMD");
}
else
{
PrintNote("HMD pointer set");
}
}
ゲーム テキスト プロップを実行すると、HMD ポインターが設定され、正常に初期化されたことが示されます。 完全なソースはこちらから入手できます。ホームキーが押されるたびに、hmd メンバー関数が呼び出され、突然壊れます。
初期化後に動作しない
bool temp = hmd->IsInputFocusCapturedByAnotherProcess();
機能しないのは、メンバー関数にアクセスしようとするとすぐにゲームがクラッシュし、ヘッドセットが完全に初期化されていないか、メモリ割り当てに問題があると思われることです。
リンカーのプロパティがあり、セットアップとすべての外部ファイルが含まれている必要があります。
他の誰かがrazer hydraで同様のことを行っており、そのソースでAPI内のメンバー関数を呼び出すことができるため、ScriptDragonは問題にならないはずです。