Настройка окружения OpenGL 1.4 в FireMonkey и получение контекста рендеринга на Windows и iOSDelphi , Графика и Игры , OpenGLВ старые времена для создания OpenGL-рендеринга в приложениях Delphi мы бы создавали TForm, размещали на нем TMyPanel с переопределенным сообщением WM_PAINT и передавали его Handle в функции WGL для поиска совместимого формата пикселя и создания контекста рендеринга. В то время как FireMonkey приложение предлагает абстракцию, которая отличается от этого подхода. В этой статье мы рассмотрим, как получить контекст рендеринга OpenGL 1.4 в FireMonkey приложении, которое работает на Windows и iOS. FireMonkey предоставляет слой абстракции, который на Windows использует DirectX, а на OSX и iOS использует OpenGL/Quartz. На Windows также возможно, что вещи могут упасть на GDI+. Из-за этого важно учитывать, что цель рендеринга может не всегда быть OpenGL, и она может не всегда быть одинаковой даже на одной и той же платформе. TCanvas является частью этого слоя абстракции. Существует три текущие реализации TCanvas, ваше приложение может использовать любую из них.
Детали реализации платформы обычно скрыты в частных разделах и недоступны. Также имеется TPlatform в FMX.Platform.pas, который скрывает детали реализации и публикует единственный API (ограниченный поcope), предназначенный для работы на всех платформах. Если вы используете FMX.Platform.Win.pas, вы можете получить оконный обработчик для данного TFmxHandle. Если вы используете FMX.Platform.Mac.pas, вы можете получить IObjectiveC для данного TFmxHandle. Однако на iOS нет эквивалентной функции в FMX_Platform_iOS.pas. После некоторых исследований мне удалось создать контекст OpenGL в FireMonkey на платформе Windows. Я еще не имею доступа к iOS, но я уверен, что что-то можно сделать и там. Решение: Добавьте FMX.Platform.Win в Uses раздел (может потребоваться обернуть его в IFDEF для iOS). Теперь вы можете использовать FmxHandleToHWND(Form1.Handle), чтобы получить действительный HWND. Вот и все. На MacOS то же самое делается путем добавления FMX.Platform.Win и вызова H_WND := FmxHandleToObjC(AHandle). Пример кода на Object Pascal (Delphi) для получения контекста рендеринга OpenGL в FireMonkey приложении на Windows:
Обратите внимание, что для получения контекста рендеринга OpenGL в FireMonkey приложении на iOS может потребоваться другой подход, так как нет эквивалентной функции в FMX_Platform_iOS.pas. В данном тексте речь идет о процессе настройки окружения OpenGL 1.4 в FireMonkey и получении контекста рендеринга на Windows и iOS. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |