【问题标题】:How to force Firemonkey to use a DirectX 9 context in Delphi XE3?如何强制 Firemonkey 在 Delphi XE3 中使用 DirectX 9 上下文?
【发布时间】:2012-12-19 04:42:09
【问题描述】:

Delphi X3 中 Firemonkey 应用程序的 TForm3D 主窗口有一个Context:TContext3D,它让我可以访问当前使用的设备。
在我使用 Windows7 64 的情况下,它始终显示来自 FMX.Context.DX10.pasTDX10Context 对象。

我无法从 FMX.Context.DX9.pas 的 TDX9Context 类创建新实例,只是为了查看祖先 TCustomDX9Context

我发现TContextManager 类在严格的私有TList 中收集注册的3D 上下文:(,这是唯一可以调用构造函数的类...

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

他们在创建新表单时调用TContextManager 来获取上下文,然后使用只读属性TContextManager.DefaultContextClass

除了DefaultContextClass,我无法找到对上下文的访问。

【问题讨论】:

  • 来自 G+ 上的评论 post: GlobalUseDX10 := False;
  • 是的! :) 这出乎意料地简单而神奇!有用!这行代码必须在 application.initialize 之前!
  • 我是新手,不知道该不该回答我自己的问题? :-/
  • 是的,如果您找到一个好的答案,请将其发布到您自己的问题中。将来可能对其他人有所帮助。

标签: delphi directx firemonkey delphi-xe3


【解决方案1】:

记录在案:

将以下行放入您的项目文件中:

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

【讨论】:

  • 谢谢,这个技巧非常有效。我们还要感谢 g+ 用户:Sergionn Rad。
  • 注意在 FMX.Types 单元中还有其他有用的 GlobalUseXX
  • 顺便说一句,Delphi 11 的文档说“警告:不推荐使用 GlobalUseDX10。请使用 GlobalUseDX。”但是 GlobalUseDX 说如果“假”它将使用 GDI 代替(不是 DX9)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多