我正在模擬器上依靠OpenGL來顯示符號,地圖,移動項目...作爲圖層/紋理。作爲OpenGL紋理WPF
我們正在研究在模擬器中引入多點觸控支持的不同選項。
WPF是其中一個選項,因爲它可以爲GUI開發提供有趣的生產力因素。原型已經建成,但不符合我們的性能要求。
我正在尋找一種方法來提高性能或任何可能使我們回到正確軌道的建議。
當前系統是基於
主/宿主應用程序寫在C++和OpenGL驅動(開始,時間表,停止...)的WPF部分和提供上下文信息
與支持多點觸摸一個WPF應用程序相應地作出反應到主背景下,爲了用戶輸入
一種用於通信的COM組件beetween主/主機應用程序和WPF應用程序
由特定抽象層管理多點觸摸輸入(處理TUIO或專有事件)
主機應用程序調度器詢問WPF應用程序要捕獲/位圖每XX毫秒(XX < 50-60ms通常)並將該位圖添加爲OpenGL紋理(glTexImage2D)以渲染仿真窗口。
WPF呈現其位圖的當前方式依賴於RenderTargetBitmap。渲染時間約爲500ms,至少比我們想要的慢10倍,並消耗太多的CPU(在這種情況下,WPF使用軟件管道)。
所以,我的問題是:
有沒有一種方法來呈現一個WPF窗口的位圖速度更快,同時保持其所有功能(透明度例如)?我知道gdi32 API,但它似乎不支持像透明度的東西,我不知道我們是否可以獲得任何性能
當前的體系結構看起來不是最佳選擇,因爲兩個「渲染」 (WPF應用程序本身的呈現和其位圖的呈現)。是否有可能WPF在一些虛擬內存空間中渲染一次,這可以直接由Main/hosting應用程序讀取?
爲什麼不能爲此選擇一些多點觸控框架?或者只是使用WPF和其他MS框架,而不需要「主機」應用程序。 – 2011-08-12 15:49:16