Графика на чистом C++

Рейтинг: 1Ответов: 3Опубликовано: 08.02.2023

Прочитал, что на C++ встроенными средствами нельзя отрисовывать графику. НО, ее можно отрисовывать с библиотекой SFML, которая написана на этих же плюсах. Объясните, где логика спряталась?

Ответы

▲ 6

Вы основываетесь на ложной посылке — "библиотекой SFML, которая написана на этих же плюсах". Потому что она использует не только чистый, переносимый, ограниченный стандартом C++, но и обращения к сторонним библиотекам/API.

Если считать использование сторонних библиотек и API "встроенными средствами С++", то ваше заявление, что "на C++ встроенными средствами нельзя отрисовывать графику" — ложно. Если же использование сторонних библиотек и API не является "встроенными средствами С++", то ложна посылка, что библиотека SFML написана "на тех же плюсах".

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

P.S. Любая дискуссия должна начинаться с точного недвусмысленного определения терминов и проверки истинности исходных посылок.

▲ 4

Разные ОС предоставляют разные волшебные библиотеки (на винде - WinAPI, OpenGL, и прочие), которые корнями уходят куда-то глубоко в нутро ОС и в непосредственную работу с железом.

SFML, SDL2 и подобные - на каждой ОС вызывают ее родные средства работы с графикой.

▲ 1

На чистом C++ ты можешь написать свою графику. Хотяя, ну почти на C++. Если быть немного человеком который любит мучения и использовать ассемблер с грязными ручками - можно вручную изменять видеопамять и рисовать что душе вздумается, но это сложно. (А ещё вряд-ли тебе просто так даст изменять видеопамять какая-либо ос)

Потому используют операционную систему. Она сама по себе выводит графическую информацию и делиться этой возможностью с другими программами в более простом интерфейсе. Прикол в том, что если ты хочешь писать кроссплатформенный код - придётся много трудиться. Ведь апи от винды не будет работать на линуксе, маке или анроиде. А таже sfml является кроссплатформенной т.е. код который ты написал будет работать на всех платформах и операционках, которые поддерживает эта библиотека.

Минус своей графики также в том, что тебе придётся делать всё с нуля. Казалось бы - нарисовать круг это так просто, но.. нет. Для этого тебе как минимум нужно знать алгоритм (Например: брезенхема), а если ты прогуливал алгебру с геометрией - лучше вообще забудь про свою графику, тк компьютерная графика - сплошная математика.

Делаем выводы: ты можешь сделать графику если хочешь, но стоит ли это того, когда есть зоопарк разных фреймворков и библиотек для этого? Вспомнить тот же qt, или если важна скорость - opengl. А если ты делаешь игру - почему-бы не использовать unreal engine который как раз использует C++? Сложно? Есть unity на шарпе.