Графика на чистом C++
Прочитал, что на C++ встроенными средствами нельзя отрисовывать графику. НО, ее можно отрисовывать с библиотекой SFML, которая написана на этих же плюсах. Объясните, где логика спряталась?
Прочитал, что на C++ встроенными средствами нельзя отрисовывать графику. НО, ее можно отрисовывать с библиотекой SFML, которая написана на этих же плюсах. Объясните, где логика спряталась?
Вы основываетесь на ложной посылке — "библиотекой SFML, которая написана на этих же плюсах". Потому что она использует не только чистый, переносимый, ограниченный стандартом C++, но и обращения к сторонним библиотекам/API.
Если считать использование сторонних библиотек и API "встроенными средствами С++", то ваше заявление, что "на C++ встроенными средствами нельзя отрисовывать графику" — ложно. Если же использование сторонних библиотек и API не является "встроенными средствами С++", то ложна посылка, что библиотека SFML написана "на тех же плюсах".
Логика никуда не спряталась, согласно науке логике из ложной посылки может вытекать что угодно...
P.S. Любая дискуссия должна начинаться с точного недвусмысленного определения терминов и проверки истинности исходных посылок.
Разные ОС предоставляют разные волшебные библиотеки (на винде - WinAPI, OpenGL, и прочие), которые корнями уходят куда-то глубоко в нутро ОС и в непосредственную работу с железом.
SFML, SDL2 и подобные - на каждой ОС вызывают ее родные средства работы с графикой.
На чистом C++ ты можешь написать свою графику. Хотяя, ну почти на C++. Если быть немного человеком который любит мучения и использовать ассемблер с грязными ручками - можно вручную изменять видеопамять и рисовать что душе вздумается, но это сложно. (А ещё вряд-ли тебе просто так даст изменять видеопамять какая-либо ос)
Потому используют операционную систему. Она сама по себе выводит графическую информацию и делиться этой возможностью с другими программами в более простом интерфейсе. Прикол в том, что если ты хочешь писать кроссплатформенный код - придётся много трудиться. Ведь апи от винды не будет работать на линуксе, маке или анроиде. А таже sfml является кроссплатформенной т.е. код который ты написал будет работать на всех платформах и операционках, которые поддерживает эта библиотека.
Минус своей графики также в том, что тебе придётся делать всё с нуля. Казалось бы - нарисовать круг это так просто, но.. нет. Для этого тебе как минимум нужно знать алгоритм (Например: брезенхема), а если ты прогуливал алгебру с геометрией - лучше вообще забудь про свою графику, тк компьютерная графика - сплошная математика.
Делаем выводы: ты можешь сделать графику если хочешь, но стоит ли это того, когда есть зоопарк разных фреймворков и библиотек для этого? Вспомнить тот же qt, или если важна скорость - opengl. А если ты делаешь игру - почему-бы не использовать unreal engine который как раз использует C++? Сложно? Есть unity на шарпе.