2011-10-12 13 views
7

私はTFormを作成し、その上にTMyPanelを置き換え(WM_PAINTメッセージをオーバーライドして)、Handleを互換性のあるピクセルフォーマットを見つけてレンダリングコンテキストを作成するWGL関数の束に渡します。ちょうどNeHeチュートリアルのようにそれをしました。Firemonkey AppでOpenGL1.4環境を設定するには?

FireMonkeyアプリケーションが登場しました。 WinとiOSで動作しているOpenGL 1.4レンダリングコンテキストを取得するには?

EDIT: TForm.Handle(これはNativeUIntです)を渡して動作させるようにしています。良いニュース - OpenGLからのエラーはありませんが、悪いニュース - TFormの出力もありません。私は明らかにここでいくつかの重要な部分が欠けています。誰かがFireMonkeyアプリケーションでOpenGLを動作させていますか?

答えて

2

調査の結果、WindowsプラットフォームでFireMonkeyでOpenGLコンテキストを作成することができました。私はまだiOSにアクセスすることはできませんが、そこで何かできることは確かです。

解決策:FMX.Platform.Winuses句を追加します(iOSの場合はIFDEFに入れる必要があります)。今度はFmxHandleToHWND(Form1.Handle)を使用して有効なHWNDを得ることができます。それでおしまい。 MacOSでは、FMX.Platform.WinH_WND := FmxHandleToObjC(AHandle);コールを追加することで同じことが行われます。

2

ファイヤーウォークキーは、抽象レイヤーを提供します。

WindowsではDirectXを使用し、OSXとiOSではOpenGL/Quartzを使用します。 ウィンドウでは、GDI +に戻る可能性もあります

これは、レンダリング先が必ずしもOpenGLであるとは限りませんし、同じプラットフォームであっても必ずしも同じであるとは限りません。

TCanvasこの抽象レイヤの一部です。

TCanvasの3つの現在の実装があります。アプリケーションでこれらのいずれかを使用している可能性があります。

  • FMX.Canvas.D2D.pas - Direct2Dの
  • FMX.Canvas.GDIP.pas - GDI +
  • FMX.Canvas.Mac.pas - マック

プラットフォームの実装の詳細は、一般的にプライベートセクションに隠されているアクセスできません。

またFMX.Platform.pasにはTPlatformがあり、実装の詳細が隠され、すべてのプラットフォームで動作するように設計された単一のAPI(範囲が限定されています)が公開されています。

あなたは、あなたがのためにIObjectiveCを得ることができますFMX.Platform.Mac.pas使用する場合は、窓が与えられたTFmxHandle

にとって扱い得ることができますFMX.Platform.Win.pas使用している場合はIOSにTFmxHandle

しかしFMX_Platform_iOS.pas

には同等の機能はありません与えられました
+0

あなたの答えは良いですが、まだ目標を達成できませんでした。 TfmxHandleに何か問題があるようです。 – Kromster