После полутора лет разработки подготовлен выпуск проекта PortableGL 0.99, развивающего программную реализацию графического API OpenGL 3.x, написанную целиком на языке Си. Теоретически PortableGL может быть использован в любых приложениях, принимающих текстуру или фреймбуфер в качестве входных данных. Код оформлен в виде одного заголовочного файла и распространяется под лицензией MIT...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=63879
> написанную целиком на языке СиГитхаб говорит, что там треть кода на плюсах написана.
Так присмотрись. Это примеры. И внешняя либа, которую затащили в исходники, чтобы не плодить зависимости.
> использование для работы с 3D-графикой на системах без GPUИнетерсно, а такие системы бывают в реальности?
В embedded полно SoC-ов с нормальным фреймбуффером, но без 3D ускорителя
Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD ускориться в таких случаях (за счёт всяких NEON)?Помню отличнейшую Outcast, которая целиком рисовалась на CPU и была по-своему мегакрутой.
> Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD
> ускориться в таких случаях (за счёт всяких NEON)?Да, помогает. Я как-то на подобном SoC делал коммерческую 3D приложуху, где очень сильно выручил llvmpipe, который за счет использования LLVM как раз хорошо ускорен SIMD-ом
>> Интересно, окупаются ли затраты на эту программную эмуляцию OGL? Поможет ли SIMD
>> ускориться в таких случаях (за счёт всяких NEON)?
> Да, помогает. Я как-то на подобном SoC делал коммерческую 3D приложуху, где
> очень сильно выручил llvmpipe, который за счет использования LLVM как раз
> хорошо ускорен SIMD-омРесурсов хватало? 30 или 60 кадров? Насколько сложная графика? Шейдеры были?
~24 кадра в секунду, графика - низкополигональная моделька, окруженная сферической оболочкой, на оболочку выводится realtime видео как текстура через хак в glTexImage2D(), позволяющий llvmpipe-у использовать видеофрейм напрямую по указателю без промежуточного копирования (эрзац аналог не реализованного OES_EGL_image_external). Шейдеров не было. Culling-а тоже не было, с ним может быть было бы даже пободрее
> В embedded полно SoC-ов с нормальным фреймбуффером, но без 3D ускорителяЯ спрашивал не про абстрактный embedded, а про реальные системы, которые не имеют ускорителя, но при этом "вывезут" на CPU программный OpenGL 3 с производительностью, которая хоть сколь-нибудь будет применима в для реальных задач. Так-то и Doom на калькуляторах запускали...
Встроенки, всякое гвно с кастомными проприетарными сборками линукса (планшеты, телефоны), которые хардарное ускорение никогла больше не увидят.
Ну, кто там бздил, что «на Си только легаси»?
Ну так OpenGL это уже легаси, мобилки требуют OpenGL ES, десктоп требует Vulkan/DirectX 12.
И даже на мобилках поддержка вулкана уже больше половины устройств.
> Ну, кто там бздил, что «на Си только легаси»Так это отличное подтверждение))
На древнем дидовом языке пишут поддержку древнего дидового OpenGL. Тот самым GL, который дропается в пользу современного вулкана всеми, кроме любителей некрожелеза.Они просто созданы друг для друго!
А что запоёшь, если напишут PortableVulkan на С ?
Подскажите, уважаемые, а на чём было написано изначально?
Казалось полмира уже на Сях, а тут на тебе.
Какую книгу посоветуете для изучения Си с нуля? В забугорских сайтах рекомендуют книгу Кернигана и Ритчи, но вот там стандарт старый, не хочется потом заново всё переучивать. Но и учить только по новому стандарту тоже нереально. Имеется ли что-то простое на подобии К&Р, но актуальное?
K&R это и есть самое актуальное. Во втором издании там нормальный ANSI C, который с момента появления поменялся примерно никак (уж точно принципиальных изменений, мешающих обучению по K&R не произошло)
> K&R это и есть самое актуальное
> ANSI CЭто шутка? ANSI C уже давно не является самым актуальным.
> Во втором издании там нормальный ANSI C
> уж точно принципиальных изменений, мешающих обучению по K&R не произошлоВторое издание особо не меняли, в нём нет чётко выделенных идей UB, TBAA и "опасности" оптимизирующего компилятора. И нет оговорок, как отходят от стандартного C в самой книге или в реальном коде (-fno-strict-aliasing и т.д.).
Гнать людей в K&R2 - это, наверное, значит гнать людей в Rust путём прививания отвращения к C. Типа "легаси, накопившееся в языке, студента может не сломить, но если ещё и книжку устаревшую подсунуть, то двойным ударом мы..."
"the implementation of malloc/free in K&R is not conformant ISO C code" *
"Neither K&R2 nor [33] mentions "undefined behavior", but it is a central if controversial concept in ISO C"
https://arxiv.org/pdf/2201.07845* это не про первое издание, "Even then, it remains unclear how to write these functions in conformant ISO C".
cppreference[.]com/w/c[.]html
K&R норм, но без практики книга смысла не имеет. В K&R кое какая практика есть, но недостаточно.
Richard Stallman and Trevis Rothwell plus Nelson Beebe on floating point, "GNU C Language Intro and Reference Manual"
C Programming: A Modern Approach - K. N. KingModern C - J. Gustedt
Так ведь самый нетерпимый к js, самый олдскульный, самый эгоцентричный и при этом один фиг - крутой преподаватель Столяров Андрей Викторович, и его трёхтомник.
http://stolyarov.info/books
А акселерацию с драйверами каких видеокарт оно умеет?Открытый драйвер Nvidia умеет использовать?
>Из областей применения упоминаются ... использование для работы с 3D-графикой на системах без GPU
Ну правильно! Он и спрашивает про невидию.
> Открытый драйвер Nvidia умеет использовать?
> Открытый драйверИ ви это називаете драйвером?))
Оно не использует никакое ускорение. Это софтовая реализация на CPU в обычной памяти.
Чет не собирается. glfw какой-то с ошибкой strdup не видит, надо обновлять до версии 3.4. Короче какое-то говно мамонта несобираемое.
Вот бы еще под FreeDOS сабж собирался. Было бы не плохо.
Интересно, и это тоже написано с помощью ChatGPT, как и валяные композиторы?