如何在Firemonkey应用程序中设置OpenGL1.4环境?

在较早的日子里,我会创建一个TForm,在其上放置一个TMyPanel(带有override WM_PAINT消息)并将其Handle传递给一堆WGL函数,这些函数可以找到兼容的像素格式并创建渲染上下文。 就像NeHe教程做的那样。

现在有FireMonkey应用程序。 如何获得在Win和iOS上工作的OpenGL 1.4渲染上下文?

编辑:一直试图通过传递TForm.Handle(这是NativeUInt)使其工作。 好消息 - 从OpenGL结束没有错误,但坏消息 - 在TForm没有输出..我显然在这里缺少一些关键的一块,有没有人在Fi​​reMonkey应用程序中有一个工作的OpenGL?


Firemonkey提供了一个抽象层。

因此,在Windows上使用DirectX,在OSX和iOS上使用OpenGL / Quartz。 在Windows上,还有可能回到GDI +

鉴于这一点,必须考虑到渲染目标可能并不总是OpenGL,并且即使在同一平台上它可能也不总是相同的。

TCanvas在这个抽象层的一部分。

目前有3种TCanvas实现,您的应用程序可能正在使用其中的任何一种。

  • FMX.Canvas.D2D.pas - Direct2d
  • FMX.Canvas.GDIP.pas - GDI +
  • FMX.Canvas.Mac.pas - Mac
  • 平台实现细节通常隐藏在私人部分中,无法访问。

    您还可以TPlatformFMX.Platform.pas其中隐藏实现细节和发布一个API(包括但不限于)被设计为在所有平台上工作。

    如果您使用FMX.Platform.Win.pas您可以获得给定TFmxHandle的窗口句柄

    如果你使用FMX.Platform.Mac.pas你可以得到IObjectiveC对于给定TFmxHandle

    但是在IOS中, FMX_Platform_iOS.pas没有等效的功能


    经过一番调查后,我在Windows平台上的FireMonkey中创建了OpenGL上下文。 我还没有访问iOS,但我相信在那里也可以做些什么。

    解决方案:将FMX.Platform.Win添加到uses子句(可能需要将其包装到iOS的IFDEF )。 现在我们可以使用FmxHandleToHWND(Form1.Handle)来获取有效的HWND 。 而已。 在MacOS上,通过添加FMX.Platform.Win并通过H_WND := FmxHandleToObjC(AHandle); 呼叫。

    链接地址: http://www.djcxy.com/p/55629.html

    上一篇: How to setup OpenGL1.4 environment in Firemonkey App?

    下一篇: TinyMCE issues with resizable content in IE8