The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск PortableGL 0.99, реализации OpenGL 3 на языке Си

15.09.2025 10:37

После полутора лет разработки подготовлен выпуск проекта PortableGL 0.99, развивающего программную реализацию графического API OpenGL 3.x, написанную целиком на языке Си. Теоретически PortableGL может быть использован в любых приложениях, принимающих текстуру или фреймбуфер в качестве входных данных. Код оформлен в виде одного заголовочного файла и распространяется под лицензией MIT.

Проектом определены такие цели, как переносимость, соответствие API OpenGL, простота использования, простой код и высокая производительность. Из областей применения упоминаются обучение концепциям построения графических API, использование для работы с 3D-графикой на системах без GPU и интеграция поддержи OpenGL в специфичные операционные системы, для которых не перенесён пакет Mesa3D. Из готовых проектов, использующих PortableGL, отмечается порт Minecraft-подобной игры Craft.

В новой версии продолжено наращивание функций и возможностей OpenGL, реализована поддержка вызовов glColorMask() и glDebugMessageCallback(), добавлен макрос PGL_UNSAFE для отключения проверки ошибок, добавлен макрос PGLDEF для определения прототипов атрибутов, переработано использование OpenGL-типов в публичном API.

  1. Главная ссылка к новости (https://github.com/rswinkle/Po...)
  2. OpenNews: Релиз Mesa 25.2, свободной реализации OpenGL и Vulkan
  3. OpenNews: Эксперимент по использованию AI для перевода приложения с GTK2 и OpenGL на GTK4 и Vulkan
  4. OpenNews: В Mesa принят amdgpu_virtio для использования OpenGL и Vulkan в гостевых системах
  5. OpenNews: Выпуск графической библиотеки IGL 1.0, абстрагирующей работу с OpenGL, Metal, Vulkan и WebGL
  6. OpenNews: Опубликован графический стандарт Vulkan 1.4
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63879-portablegl
Ключевые слова: portablegl, opengl
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (66) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Fracta1L (ok), 11:37, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    > написанную целиком на языке Си

    Гитхаб говорит, что там треть кода на плюсах написана.

     
     
  • 2.3, Аноним (3), 11:39, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Так присмотрись. Это примеры. И внешняя либа, которую затащили в исходники, чтобы не плодить зависимости.
     
     
  • 3.52, Аноним (52), 22:10, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > чтобы не плодить зависимости

    Но ведь зависимость осталась, только теперь её нужно собирать ещё раз, и дыры в ней не затыкаются...

     

  • 1.4, Аноним (4), 11:43, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > использование для работы с 3D-графикой на системах без GPU

    Инетерсно, а такие системы бывают в реальности?

     
     
  • 2.9, kravich (ok), 12:09, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    В embedded полно SoC-ов с нормальным фреймбуффером, но без 3D ускорителя
     
     
  • 3.15, IMBird (ok), 12:16, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD ускориться в таких случаях (за счёт всяких NEON)?

    Помню отличнейшую Outcast, которая целиком рисовалась на CPU и была по-своему мегакрутой.

     
     
  • 4.17, kravich (ok), 12:20, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD
    > ускориться в таких случаях (за счёт всяких NEON)?

    Да, помогает. Я как-то на подобном SoC делал коммерческую 3D приложуху, где очень сильно выручил llvmpipe, который за счет использования LLVM как раз хорошо ускорен SIMD-ом

     
     
  • 5.23, IMBird (ok), 12:31, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >> Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD
    >> ускориться в таких случаях (за счёт всяких NEON)?
    > Да, помогает. Я как-то на подобном SoC делал коммерческую 3D приложуху, где
    > очень сильно выручил llvmpipe, который за счет использования LLVM как раз
    > хорошо ускорен SIMD-ом

    Ресурсов хватало? 30 или 60 кадров? Насколько сложная графика? Шейдеры были?

     
     
  • 6.25, kravich (ok), 12:42, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    ~24 кадра в секунду, графика - низкополигональная моделька, окруженная сферической оболочкой, на оболочку выводится realtime видео как текстура через хак в glTexImage2D(), позволяющий llvmpipe-у использовать видеофрейм напрямую по указателю без промежуточного копирования (эрзац аналог не реализованного OES_EGL_image_external). Шейдеров не было. Culling-а тоже не было, с ним может быть было бы даже пободрее
     
  • 6.56, Аноним (56), 22:41, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Первая халфа и квейк вполне себе бегали на процах тех лет без SIMD вообще с программной растеризацией. А если упростить графен до уровня PS1 - то пойдёт даже cortex m0, есть 3д игруля для raspberry pi pico.
     
  • 4.53, Аноним (52), 22:11, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Outcast на CPU не рисовалась. Ты, возможно, с команчем путаешь.
     
     
  • 5.57, Аноним (57), 22:57, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Именно на CPU она рисовалась. Только там и движок наподобие команча — в основном рисование террейна, потому что воксели.
     
  • 3.26, Аноним (4), 12:47, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > В embedded полно SoC-ов с нормальным фреймбуффером, но без 3D ускорителя

    Я спрашивал не про абстрактный embedded, а про реальные системы, которые не имеют ускорителя, но при этом "вывезут" на CPU программный OpenGL 3 с производительностью, которая хоть сколь-нибудь будет применима в для реальных задач. Так-то и Doom на калькуляторах запускали...

     
     
  • 4.54, Аноним (52), 22:14, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Спектр реальных задач огромен, в него входит и не-realtime графика, и 2D и сцены из небольшого числа полигонов.
     
     
  • 5.59, Аноним (59), 23:07, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Спектр реальных задач огромен, в него входит и не-realtime графика, и 2D и сцены

    Ну вот опять эти абстрактные задачи... Вы реальную систему с реальным юзкейсом приведите.

     
  • 2.12, Аноним (12), 12:11, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Встроенки, всякое гвно с кастомными проприетарными сборками линукса (планшеты, телефоны), которые хардарное ускорение никогла больше не увидят.
     
  • 2.40, Аноним (40), 16:27, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Софтварные движки до сих пор есть, если не нужны вс эти новомодные эффекты, мульон фпс и прочее, они намного проще в использовании и апишечка удобнее.
     
     
  • 3.42, Аноним (59), 18:24, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Софтварные движки до сих пор есть

    Где ты их видел?

     
  • 3.55, Аноним (52), 22:15, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Нет таких движков. А если бы были, с чего их API быть проще?
     
  • 3.58, Аноним (57), 23:00, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > если не нужны вс эти новомодные эффекты, мульон фпс и прочее

    …То используются GPU-движки без задействования этих новомодных эффектов (которым лет двадцать уже) и прочего.

     
  • 2.71, Bottle (?), 14:59, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Бывают. Куча разработчиков видеоигр раньше лайтмапы считали исключительно на кластерах CPU, писали целые софтварные рейтрейсеры под это дело.
    А киношники до сих пор так делают.
     

  • 1.5, Аноним (5), 11:47, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Ну, кто там бздил, что «на Си только легаси»?
     
     
  • 2.10, Bottle (?), 12:10, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Ну так OpenGL это уже легаси, мобилки требуют OpenGL ES, десктоп требует Vulkan/DirectX 12.
    И даже на мобилках поддержка вулкана уже больше половины устройств.
     
  • 2.22, Аноним (-), 12:30, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Ну, кто там бздил, что «на Си только легаси»

    Так это отличное подтверждение))
    На древнем дидовом языке пишут поддержку древнего дидового OpenGL. Тот самым GL, который дропается в пользу современного вулкана всеми, кроме любителей некрожелеза.

    Они просто созданы друг для друго!

     
     
  • 3.33, Аноним (33), 14:14, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А что запоёшь, если напишут PortableVulkan на С ?
     
     
  • 4.45, Аноним (45), 18:29, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так у вулкана самая популярная реализация - на с++ =)
     
     
  • 5.48, Аноним (59), 18:41, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Так у вулкана самая популярная реализация

    Это какая?

     
  • 5.68, Аноним (68), 08:10, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так у вулкана самая популярная реализация - на с++

    Господи, и плюсики же этому ставят. Где вы видели *реализацию* Вулкана на C++?

     
  • 3.46, Аноним (45), 18:30, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А под современный вулкан на чем пишут?)
     
     
  • 4.61, Аноним (61), 00:19, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Мечтают писать на Раст.
     
  • 4.67, Аноним (68), 08:09, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А под современный вулкан на чем пишут?)

    Под что угодно) Там же только интерфейс на С, чтобы было легко связываться с любым языком.

     

  • 1.6, Аноним (6), 11:47, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Подскажите, уважаемые, а на чём было написано изначально?
    Казалось полмира уже на Сях, а тут на тебе.
     
  • 1.8, Аноним (8), 12:08, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Какую книгу посоветуете для изучения Си с нуля? В забугорских сайтах рекомендуют книгу Кернигана и Ритчи, но вот там стандарт старый, не хочется потом заново всё переучивать. Но и учить только по новому стандарту тоже нереально. Имеется ли что-то простое на подобии К&Р, но актуальное?
     
     
  • 2.11, kravich (ok), 12:11, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • –2 +/
    K&R это и есть самое актуальное. Во втором издании там нормальный ANSI C, который с момента появления поменялся примерно никак (уж точно принципиальных изменений, мешающих обучению по K&R не произошло)
     
     
  • 3.30, Аноним (4), 13:31, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > K&R это и есть самое актуальное
    > ANSI C

    Это шутка? ANSI C уже давно не является самым актуальным.

     
  • 3.38, Аноним (38), 15:42, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Второе издание особо не меняли, в нём нет чётко выделенных идей UB, TBAA и опас... большой текст свёрнут, показать
     
     
  • 4.39, анонимммм (?), 15:53, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Главное начать, а потом уже сам разберётся, если базово язык зайдёт.
     
     
  • 5.41, Аноним (38), 16:59, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Для начинания надо что-то вдохновляющее.

    Если открыть K&R2 в момент выхода, то ого - впереди перспективы. Плюсы ещё слабее современного раста, джава ещё не случилась, раст не случился, бизнес не пошёл в веб как в дешёвую кроссплатформу, государства не понимают что за компьютеры и не лезут с регулированием безопасности.

    А сейчас? Не смотреть же на это как на легаси-книжку к легаси-языку.

    Особенно когда перед глазами постоянно реализации ООП вручную (автору нужно, а в языке нет) и обобщённого программирования (тут и макросы, и кодогенерация).
    https://github.com/rswinkle/PortableGL/blob/master/src/cvector_macro.h#L387
    https://github.com/rswinkle/PortableGL/blob/master/src/generate_code.py#L12

     
     
  • 6.66, анонимммм (?), 07:29, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Как категорично.
    Если тебя не вдохновляет, это не значит, что у всех так.
     
  • 5.43, Аноним (59), 18:27, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Главное начать, а потом уже сам разберётся, если базово язык зайдёт.

    Дальше разбираться у него уже не будет времени, ибо надо что-то кушать, а вакансий с пректами на С почти нет.

     
     
  • 6.65, анонимммм (?), 07:27, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вакансий, конечно, решительно меньше, но они есть. Сам начинал с си.
    Было бы желание.
     
  • 6.72, Аноним (72), 14:11, 17/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    А сейчас он что кушает? Вот и пусть это кушает дальше, пока не разберётся.
    А если ради вакансий, то их на C++ гораздо больше.
     
  • 3.44, Аноним (38), 18:28, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Хотя K&R2 выглядит не так плохо, если стандартом языка подтереться (то есть ориентироваться на компиляторы и игнорировать текст стандарта).

    На правила алиасинга постоянно кладут, а если задумываются о них, то рассматривают как ошибку в стандарте.
    https://github.com/rswinkle/PortableGL/blob/master/src/gl_internal.c#L106

     
     
  • 4.49, Аноним (38), 19:11, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    (хотя не, конкретно эта строка без ошибок)
     
  • 2.14, Аноним (12), 12:13, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    cppreference[.]com/w/c[.]html
     
  • 2.20, анонимммм (?), 12:26, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    K&R норм, но без практики книга смысла не имеет. В K&R кое какая практика есть, но недостаточно.
     
  • 2.31, Аноним (33), 14:07, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Richard Stallman and Trevis Rothwell plus Nelson Beebe on floating point, "GNU C Language Intro and Reference Manual"
     
     
  • 3.47, Аноним (45), 18:34, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Смешная шутка. Это одно из самых худших пособий по си в мире.
     
     
  • 4.60, Аноним (61), 00:16, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Чем же плохо это пособие?
     
     
  • 5.69, Аноним (69), 08:44, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что у него аллергия на Столлмана.
     
  • 2.35, Аноним (-), 14:25, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    C Programming: A Modern Approach - K. N. King

    Modern C - J. Gustedt

     
  • 2.36, Мохнонос (?), 15:29, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Так ведь самый нетерпимый к js, самый олдскульный, самый эгоцентричный и при этом один фиг - крутой преподаватель Столяров Андрей Викторович, и его трёхтомник.
    http://stolyarov.info/books
     
     
  • 3.62, Аноним (62), 03:36, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Столяров, перелогиньтесь.
     
     
  • 4.64, Мохнонос (?), 07:13, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я - это не он.
     
  • 2.50, Anonymus (?), 20:48, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дейтэл Х., Дейтел П."Си для программистов с введением в С11" (ISBN: 978-5-97060-205-8)

    Как вариант - Дейтэл Х., Дейтел П. "Как программировать на С" (ISBN: 978-5-9518-0559-1)

    И да, справочники вроде https://en.cppreference.com/w/c/language.html и https://cplusplus.com/reference/clibrary/ тоже неплохи для понимания работы некоторых операторов стандартной библиотеки.

     
  • 2.75, Аноним (75), 11:32, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если с нуля, то начни с Head First C (Griffiths), там на пальцах и картинках объясняются сложные темы. Потом (ну или сразу, если эта покажется слишком детской) - C Programming: A Modern Approach (King).
     

  • 1.16, Аноним (16), 12:16, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А акселерацию с драйверами каких видеокарт оно умеет?

    Открытый драйвер Nvidia умеет использовать?

     
     
  • 2.21, kravich (ok), 12:27, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    >Из областей применения упоминаются ... использование для работы с 3D-графикой на системах без GPU
     
     
  • 3.28, Аноним (28), 12:52, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Ну правильно! Он и спрашивает про невидию.
     
  • 2.34, Аноним (33), 14:16, 15/09/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Оно не использует никакое ускорение. Это софтовая реализация на CPU в обычной памяти.
     

  • 1.24, Аноним (24), 12:41, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Чет не собирается. glfw какой-то с ошибкой strdup не видит, надо обновлять до версии 3.4. Короче какое-то говно мамонта несобираемое.
     
  • 1.29, Аноним (-), 13:10, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Вот бы еще под FreeDOS сабж собирался. Было бы не плохо.
     
     
  • 2.63, Аноним (57), 05:09, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Вполне возможно, что и соберётся (проверять это, конечно же, я не буду).
     
  • 2.76, Аноним (76), 21:21, 18/09/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот к чему это? У доса нет графической системы, там этот огл никак не вперся
     

  • 1.51, Аноним (51), 21:13, 15/09/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда все давно перешли на Вулкан, а эти ещё не сделали и первую версию ОпенЖЛ.
     
     
  • 2.70, Аноним (70), 13:12, 16/09/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пулкан помрёт, когда ОГЛ будут всё ещё использовать.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру