簡體   English   中英

OpenVR:虛擬API函數的實現(GetProjectionMatrix)

[英]OpenVR: Implementation of virtual API functions (GetProjectionMatrix)

我無法從openvr header 找到純虛函數的實現(又名源代碼)。

我主要對GetProjectionMatrix() function 感興趣。

我在哪里搜索(沒有結果):

  • 簡單的谷歌搜索
  • 在 repo 中搜索 function 名稱
  • 在提取的符號中,大多數包含的庫(.dll 和.lib)的導入和導出表

到目前為止我發現了什么: https://github.com/ValveSoftware/openvr/issues/103 ,但這似乎處理不同編譯器產生的問題。 該問題的錯誤產生於SteamVR提供的vrclient.dll。 他們兩個似乎都沒有公開來源。

知道這些虛函數是如何(/在哪里)實現的嗎?

您不會喜歡這個答案,因為可悲的現實是它沒有可供我們使用的開源資源。

OpenVR 是一個純粹的虛擬界面庫,是的,界面是開源的,但這些界面的實際實現不是。 libopenvr_api (看起來像)的情況下,它們作為二進制 blob 附加到接口構建中。

工作方式是通過在接口庫中聲明但在其他地方定義的工廠函數,那些外部定義的部分對我們來說就像一個黑盒子,除非 Valve 突然改變主意,否則它將保持這種狀態。

這些工廠函數在openvr.hopenvr_driver.hOPENVR_INTERFACE_INTERNAL部分中聲明和使用(在openvr.h的情況下,這些工廠函數也在openvr_capi.h中定義,但它們使用在共享庫中定義的工廠函數只是在運行時加載,整個模式與openvr.h中的模式非常相似)。

編輯:

(同樣在openvr.h的情況下,這些工廠函數在openvr_capi.h中定義,但它們使用在共享庫中定義的工廠函數,該共享庫僅在運行時加載,整個模式與openvr.h中的非常相似)

我的 memory 顯然讓我失望了,內部工廠函數是在openvr_api_public.cpp中定義的,它是libopenvr_api的源文件之一,而不是openvr_capi.h中(為了我的辯護,我有一段時間沒有看libopenvr_api源) .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM