2012-12-19 79 views
7

Delphi X3中Firemonkey應用程序的主TForm3D窗口有一個Context:TContext3D,它使我可以訪問當前使用的設備。
在我的情況下,對於Windows7 64,它始終顯示FMX.Context.DX10.pasTDX10Context對象。如何強制Firemonkey在Delphi XE3中使用DirectX 9上下文?

我還沒有知名度,從TDX9Context類中創建新實例從FMX.Context.DX9.pas正好看到祖先TCustomDX9Context

我發現TContextManager類收集registerd 3D環境中嚴格的私人TList :(,這是可以調用構造函數的唯一類...

{ Don't call contructor directly from TContext - only using TContextManager class } 
constructor CreateFromWindow(const AParent: TFmxHandle; const AWidth, AHeight: Integer;` 

他們呼籲TContextManager,以獲得上下文創造新的形式的時候,那麼一個只讀屬性TContextManager.DefaultContextClass使用。

沒有辦法,我能找到進入其他上下文比DefaultContextClass

+2

從一個評論對你的G + [文章](https://plus.google.com/u/0/107332916729762772829/文章/ VKvvLHwdYUc):[GlobalUseDX10](http://docwiki.embarcadero.com/Libraries/XE3/en/FMX.Types.GlobalUseDX10):= False; –

+0

是的! :)這實在太簡單了,太神奇了!有用!這行代碼必須在application.initialize之前! – piXelicidio

+0

我是新手,我不知道是否應該回答我自己的問題? : -/ – piXelicidio

回答

2

爲了記錄:

把下面的行項目中的文件:

GlobalUseDX10 := False; <<-- add this. 
Application.Initialize; <<-- just before this line. 
+0

謝謝,這個技巧完美。我們也應該感謝g +用戶:Sergionn Rad。 – piXelicidio