Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Примеры приложений OpenGL на Oxygene для кроссплатформенной работы

Delphi , Графика и Игры , OpenGL

Если у вас есть рабочий проект OpenGL для ПК, который также работает на MacOS и Linux под Wine, и вы хотите попробовать его скросс-компилировать для планшетов, перед вами может встать вопрос о выборе подходящего инструмента. Delphi XE2/XE4 предлагает поддержку iOS, но Android еще не реализован, и, учитывая историю реализации iOS, это может занять 1-2 года. В этом случае можно рассмотреть другие возможности, которые позволят сохранить majority кодовой базы на Pascal (80k строк). Одним из таких инструментов является Oxygene.

Вопрос: Есть ли примеры приложений OpenGL, созданных с помощью Oxygene, которые можно скросс-компилировать для работы на PC/MacOS/iOS/Android?

Ответ: К сожалению, на данный момент таких примеров нет. Oxygene не пытается быть совместимым по источнику с Delphi, и runtime-библиотеки, используемые различными вариантами Oxygene, полностью отличаются от тех, которые используются в Delphi. Таким образом, вы не найдете серьезных библиотек, которые имели бы одинаковый источник, который можно было бы скомпилировать tanto на Oxygene, как и на Delphi.

Подход, использованный RemObjects для разработки Oxygene на разных платформах, радикально отличается от подхода, использованного Embarcadero с Delphi. В случае с Delphi целью является возможность одноисточниковой разработки для всех платформ с помощью FireMonkey. В случае с Oxygene каждая платформа нацелена отдельно. Для Windows используется runtime .net, для Java - JVM, а для платформ Apple - Cocoa. Все это означает, что вы не можете ожидать, что напишете GUI-приложение в Oxygene и оно будет работать на нескольких платформах.

Хотя Oxygene предоставляет отличный кросскомпилятор, на данный момент вы привязаны к использованию RTL, доступного на каждой платформе. В отличие от этого, FreePascal имеет встроенные OpenGL-единицы и уже несколько библиотек над ними, одну из самых мощных/известных является GLScene. SmartMobileStudio имеет встроенную поддержку WebGL и может делать amazing вещи на современных браузерах, что делает его отличным выбором для веб-разработки.

Альтернативный ответ: Вы можете написать собственный слой OpenGL в Oxygene с использованием mapped types, как это используется в открытом исходном проекте sugar. В вашем коде вы просто используете один класс, который во время компиляции напрямую Mapping к методу класса подлежащей платформы, без перегрузки этого слоя.

Пример кода на Object Pascal (Delphi):

program OpenGLExample;

{$APPTYPE CONSOLE}

uses
  System.SysUtils,
  System.Generics.Collections,
  System.Classes;

type
  TOpenGLInterface = interface
    function Init: Boolean;
    function Render: Boolean;
  end;

  TOpenGLImpl = class(TInterfacedObject, IOpenGLInterface)
  private
    FImpl: IOpenGLInterface;
  public
    constructor Create; overload;
    constructor Create(Impl: IOpenGLInterface); overload;
    function Init: Boolean; override;
    function Render: Boolean; override;
  end;

{ TOpenGLImpl }

constructor TOpenGLImpl.Create;
begin
  Create(nil);
end;

constructor TOpenGLImpl.Create(Impl: IOpenGLInterface);
begin
  inherited Create;
  FImpl := Impl;
end;

function TOpenGLImpl.Init: Boolean;
begin
  Result := FImpl.Init;
end;

function TOpenGLImpl.Render: Boolean;
begin
  Result := FImpl.Render;
end;

var
  GL: IOpenGLInterface;
begin
  GL := TOpenGLImpl.Create(nil);
  if GL.Init then
    while not GL.Render do
      Sleep(100);
  Readln;
end.

В этом примере мы создаем интерфейс TOpenGLInterface и реализацию TOpenGLImpl, которая использует mapped types для доступа к платформоспецифичной реализации OpenGL. В основном цикле мы вызываем методы Init и Render, которые являются абстракцией над платформоспецифичной реализацией OpenGL.

В заключение, хотя на данный момент нет примеров приложений OpenGL, созданных с помощью Oxygene, которые можно было бы скросс-компилировать для работы на PC/MacOS/iOS/Android, вы можете написать собственный слой OpenGL в Oxygene с помощью mapped types. Кроме того, вы можете рассмотреть другие инструменты, такие как FreePascal или SmartMobileStudio, в зависимости от ваших конкретных потребностей.

Создано по материалам из источника по ссылке.

Приведены примеры приложений OpenGL на Oxygene для кроссплатформенной работы.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: OpenGL ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-02-05 18:59:11/0.0039000511169434/0