7

昔は、TForm を作成し、TMyPanel を (WM_PAINT メッセージをオーバーライドして) その上に配置し、互換性のあるピクセル形式を見つけてレンダリング コンテキストを作成する一連の WGL 関数にそのハンドルを渡していました。NeHe のチュートリアルと同じように。

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

編集: TForm.Handle (NativeUInt) を渡すことで機能するようにしようとしています。良いニュース - OpenGL エンドからのエラーはありませんが、悪いニュース - TForm にも出力がありません。

4

2 に答える 2

2

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- マック

プラットフォームの実装の詳細は、通常、アクセスできないプライベート セクションに隠されています。

またTPlatformFMX.Platform.pas実装の詳細を非表示にし、すべてのプラットフォームで動作するように設計された単一の API (範囲が限定されています) を公開しています。

使用FMX.Platform.Win.pasすると、特定のウィンドウハンドルを取得できますTFmxHandle

使用すると、特定FMX.Platform.Mac.pasの を取得できますIObjectiveCTFmxHandle

ただし、IOS には同等の機能はありません。FMX_Platform_iOS.pas

于 2011-10-13T13:15:08.567 に答える
2

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

解決策: 句に追加FMX.Platform.Winします ( iOS では 'susesにラップする必要がある場合があります)。これで、有効な を取得するためにIFDEF使用できます。それでおしまい。MacOS では、追加と呼び出しによって同じことが行われます。FmxHandleToHWND(Form1.Handle)HWNDFMX.Platform.WinH_WND := FmxHandleToObjC(AHandle);

于 2011-10-19T18:45:30.077 に答える