LINUX.ORG.RU

ZenGL 0.3 beta 1

 , , , zengl


0

2

После длительной «underground» разработки вышла новая версия ZenGL — кроссплатформенной библиотеки для разработки игр, написанной на Pascal и предоставляющей необходимый функционал для вывода 2D-графики, обработки ввода, воспроизведения звука и пр. Подробнее о функциональности можно прочитать на официальном сайте.

Данный релиз содержит такие нововведения как:

  • поддержка платформ iOS и Android;
  • работа с zip-архивами;
  • многопоточная загрузка ресурсов;
  • подсистема декодирования видео с поддержкой theora;
  • наличие сборки с заголовочными файлами для C/C++.

>>> Официальный сайт

★★★★

Проверено: mono ()
Последнее исправление: CYB3R (всего исправлений: 4)

Ответ на: комментарий от Artificial_Thought

Паскаль что, ещё жив?

Его просто хорошо шевелят.

O02eg ★★★★★
()

многопоточная загрузка ресурсов;

А в чём фишка многопоточной загрузки с *одного* устройства?

r2d2
()
Ответ на: комментарий от r2d2

А в чём фишка многопоточной загрузки с *одного* устройства?

- декодинг png и пр. форматов выполняется не мгновенно после чтения файла -> профит от декодинга таких форматов в несколько потоков на нескольких ядрах
- фоновая загрузка отдельно от основного процесса для рендера анимации, пока что-то грузится

Andru ★★★★
() автор топика
Ответ на: комментарий от r2d2

Так это называется асинхронная загрузка.

Когда можно создавать очереди в несколько потоков для загрузки - это многопоточная загрузка :} Но да, тут и асинхронная подходит, но я не заморачивался с терминологией.

Andru ★★★★
() автор топика

не хотите распространять исходный код вашего проекта и вам необходимо использовать статическую компиляцию с ZenGL

Это спорный вопрос.

r2d2
()
Ответ на: комментарий от unC0Rr

[объяснения для тупых super mode on]

почему нельзя?

Потому что в Си возврат значения допустим только внутри тела функции (ну логично же). Операция сложения возвращает значение. С другой стороны, операция присваивания - одна машинная команда, ни о каком возврате значения не может идти речи. Кроме того, константа может быть инициализированна только константой (опять же, по Стандарту). Ундерстанд?[2]

Не спорю, это недочет Стандарта. Но в отличие от паскалевского косяка (запрет точки с запятой после else) есть решение (а может, и не одно): использовать #define. Компилятор даже за тебя все рассчитает, и в программе не будет лишних вычислений.

обозвал

Все правильно сказал.

старенький

Не то слово.

А теперь встречный вопрос: ты дейстительно фанат паскаля, или просто разжигаешь холивар? За что ты его любишь? Вот я, например, люблю сишку за необычайную свободу - можно, например, взять адрес цифры-константы и присвоить по нему значение (можно, но не нужно). И за то, что для любых целей на сишке написана куча библиотек. А не люблю паскаль за то, что ЕГО ЖЕ ДЕТИ ИЗУЧАЮТ в школе! Тот же самый питон намного богаче, красивее и прививает хорошее форматирование кода.

anonymous
()
Ответ на: комментарий от anonymous

не люблю паскаль за то, что ЕГО ЖЕ ДЕТИ ИЗУЧАЮТ в школе!

Открою страшную тайну: дети в школе много чего изучают, начиная с родного языка и арифметики

dexpl ★★★★★
()
Ответ на: комментарий от anonymous

есть решение (а может, и не одно): использовать #define

#define - это препроцессор, а не компилятор... по сути - костыль, а не решение

а может, и не одно

да, есть решение (тоже костыльное, но более приемлемое, чем использование препроцессора) - использовать enum, но так и остаётся непонятным, чем const int менее константен, чем enum

ты дейстительно фанат паскаля?

я не фанат паскаля, просто постоянно использую его, как и пяток других языков

Вот я, например, люблю сишку за необычайную свободу

А я за это же недолюбливаю. Опять же, где эта свобода, когда const int нельзя проинициализировать суммой других const int-ов?

А не люблю паскаль за то, что ЕГО ЖЕ ДЕТИ ИЗУЧАЮТ в школе!

Весьма странный аргумент :)

unC0Rr ★★★★★
()
Ответ на: комментарий от anonymous

ЕГО ЖЕ ДЕТИ ИЗУЧАЮТ в школе!

Таки да, паскаль отлично подходит для обучения основам алгоритмизации (а после нагромождения на него груды костылей он становится ещё и прекрасной демонстрацией основ ООП). Но вот маргиналов, скатившихся до использования паскаля за пределами образовательных учреждений, следует подвергать общественному порицанию и ссылать в Индию.

anonymous
()
Ответ на: комментарий от anonymous

Роботы указывают человекам на каком языке разговаривать, докатились...

Napilnik ★★★★★
()

Появилось что-нибудь новенькое на движке?

Хотелось бы поиграться.

MihailP ★★
()
Ответ на: комментарий от anonymous

Но в отличие от паскалевского косяка (запрет точки с запятой после else)...

После или перед else?

Если перед, то нет там никакого специального запрета. Точка с запятой разделяет операторы: перед точкой с запятой один оператор, после — другой. If может быть без else, а вот else без if не может быть. И если поставить перед else точку с запятой, то получите синтаксическую ошибку из-за повисшего else, так как компилятор, встретив точку с запятой, поймёт, что условный оператор завершён и будет ожидать после неё следующего оператора, а else таковым не является (это опциональная часть условного оператора).

Условный оператор записывается так:

if условие then оператор1 else оператор2;
if условие then оператор1;

При этом оператор1 и оператор2 это именно по одному простому оператору, либо блок операторов, обрамлённый begin/end.

ogion ★★
()
Ответ на: комментарий от ogion

Да, перед else.

If может быть без else, а вот else без if не может быть.

Логично, но в результате мы получаем чудную ситуацию: точка с запятой допустима после любого end, кроме end в конце программы (там точка) и end перед else (там нельзя ставить вообще ничего). Поэтому я и считаю запрет на точку с запятой перед else вершиной маразма. Зачем было вводить это дополнительное ограничение, если никаких причин, кроме «компилятору так удобнее», для этого нет?

AVas
()
Ответ на: комментарий от AVas

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

anonymous
()
Ответ на: комментарий от anonymous

Почему использовали libzip, а не paszlib?

может имелось ввиду zlib против paszlib? Просто реализация на Pascal'е весьма убога и тормознута, посему все библиотеки использую оригинальные, нафиг этот маразм с трансляцией.

Andru ★★★★
() автор топика
Ответ на: комментарий от anonymous

Удивительно, как же так получилось?

Переписывание с одного языка на другой без учёта особенностей компилятора + куча говнокода = результат. Ещё попытки потроллить, анонимус? :}

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Ещё попытки потроллить, анонимус? :}

Ага) Почему новости о других движках постят фанты, а о твоем движке - ты сам? :}

anonymous
()
Ответ на: комментарий от pktfag

Не пробовал, для Delphi всегда объектники от zlib использовал, собранные Borland C++.

Andru ★★★★
() автор топика
Ответ на: комментарий от anonymous

Ага) Почему новости о других движках постят фанты, а о твоем движке - ты сам? :}

Потому что мне захотелось и я написал новость там, где обитаю(да-да, и ещё в несколько мест заглянул пиара ради). Ещё вопросы? :}

Andru ★★★★
() автор топика
Ответ на: комментарий от Andru

Вопросов больше нет. Тема полна паскаля и самопиара.

anonymous
()
Ответ на: комментарий от AVas

Логично, но в результате мы получаем чудную ситуацию: точка с запятой допустима после любого end, кроме end в конце программы (там точка) и end перед else (там нельзя ставить вообще ничего).

Нет, не после любого end. После end, отмечающего конец программы тоже не ставится. Вообще, точка с запятой не привязана ни к end, ни к какой другой конструкции. Точка с запятой — это разделитель операторов. Если есть возможность вставить несколько операторов, то они должны быть разделены точкой с запятой. Соответственно, после последнего оператора в блоке точка с запятой не нужна, то же самое, если он единственный. Между then и else может быть только один оператор (в том числе составной), там нечего разделять точкой с запятой.

ogion ★★
()
Ответ на: комментарий от ogion

Соответственно, после последнего оператора в блоке точка с запятой не нужна, то же самое, если он единственный. Между then и else может быть только один оператор (в том числе составной), там нечего разделять точкой с запятой.

Выглядит логично, если бы не одно отличие: если в обычном блоке операторов программист может не ставить символ ';' после последнего оператора, то перед else он обязан его не ставить.

AVas
()
Ответ на: комментарий от unC0Rr

Сегодня наткнулся на ответные непонятки (компилятор - Delphi 7, и сменить его, к сожалению, я не могу):

unit UnitNameHere;

interface

const
  FOO: Integer = 3;
  BAR: Integer = 5;

type
  TSomeClass = class(TObject)
  public
    procedure DoSomethingWith(number: Integer);
  end;

implementation

procedure TSomeClass.DoSomethingWith(number: Integer);
begin
  // компилиться не будет - компилятор почему-то не считает аргументы case константами
  {
  case number of
    FOO: ExecuteSomeFunction();
    BAR: DoUsefulStuff();
  else ReportInvalidValue();
  end;
  }
end;

end.
AVas
()
Ответ на: комментарий от AVas

Таки да, феерично. Правда если убрать тип у констант, то хавает, забавно.

Andru ★★★★
() автор топика
Ответ на: комментарий от AVas

Просто типизированная константа это на самом деле переменная с начальным значением.
Т.е

const FOO: Integer = 3;

это то же, что

int FOO = 3;

в си.
---
Такие упоротые конструкции заслуживают большего внимание, чем якобы нелогичность с «;» и else.

quantum-troll ★★★★★
()
Ответ на: комментарий от AVas

Выглядит логично, если бы не одно отличие: если в обычном блоке операторов программист может не ставить символ ';' после последнего оператора, то перед else он обязан его не ставить.

В блоке может быть несколько операторов. Точка с запятой, поставленная после последнего оператора в блоке просто делает его предпоследним, последним в этом случае становнится пустой оператор. Т.о., если есть точка с запятой, то всегда есть 2 оператора: тот, что перед ней, и тот, что после неё. Ну а конструкция then ... else не является блоком, между then и else не может быть нескольких операторов, допустим только единственный оператор.

Просто надо понять, в чём разница между точкой с запятой в паскале и других языках. В паскале точка с запятой — это разделитель операторов. Соответственно, там где можно вставить несколько операторов, там и точку с запятой можно «лишнюю» вставить. Там где разрешён единственный оператор, там точка с запятой недопустима, так как после неё всегда следует второй оператор, даже если это пустой оператор.

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

ogion ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.