Задать вопрос

Как реализовалась графика?

Я хочу узнать как удается (удалось) операционным системам рисовать графически. Поясню что имею ввиду, есть стандартный набор символов КОИ-8, с помощью их делали на DOS программы наподобие таких, как в windows (некоторых linux) получилось делать любую графическую модель, и возможно сделать по такому методу графический интерфейс на C/C++, LUA. Да, может кто-то скажет: "Не изобретай велосипед". Но я хочу понять как это работает и увидеть хотя бы на маленьком примере, который смог бы рисовать круг или квадрат заданного размера.

не псевдографика.
  • Вопрос задан
  • 778 просмотров
Подписаться 4 Оценить 4 комментария
Решения вопроса 2
2ord
@2ord
Отвечу в меру своего понимания о выводе графики на экран.
В основе работы с графикой лежит работа с растром (матрицей) на низком уровне. Векторная графика реализуется на программном уровне, выше растрового, в виде библиотек. Та же OpenVG, допустим, которая реализует векторную графику в виде инструкций на OpenGL.

В ДОС'е в текстовом режиме (80х25, 80х43) всё выводилось растровыми шрифтами, которые покрывали диапазон 256 знаков таблицы ASCII.
KOI8-R содержит знаки псевдографики среди прочих. Этой псевдографикой пользовались для рисования таблиц, оформления окон и прочих вещей типа эффекта "тени" от окна.
Каждый знак - это битовый набор пикселей: горит - не горит. В ДОС'е шрифты были, помню, фиксированных размеров 8x8, 8x16 и загружались в память при загрузке ОС.
Как выводить знак на экран: накладывать маску AND в определённой позиции знака.
Как что-либо выводить на экран: работать через прерывания в ДОС'е или с помощью драйверов видео. Поскольку ОС и драйвера (на сей день), как правило, пишутся на Сях, то API также сишный.

Update
Шрифты в современных ОС часто выводятся при помощи библиотек растеризаторов шрифтов наподобие FreeType. Они по заданному шрифту и тексту выводят маску текста в буфер. А этот буфер уже программно накладывают на фон/текстуру.
Ответ написан
leahch
@leahch Куратор тега Linux
3D специалист. Dолго, Dорого, Dерьмово.
Кодовые слова termcap, ncurses, turbovision, escape codes.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
А, все таки настоящую графику, не знаю нафига вообще вы вспомнили про эти символы.
По графике довольно таки много литературы есть. Очень сложно объяснить это в двух словах, но я попробую:
1) как вы уже заметили, есть два принципиально разных способа представления граф. информации - вектор и растр. Про каждый из них масса инфы, начните с вики.
2) есть различные графические API и библиотеки, некоторые из них - специфичные для конкретной платформы (как GDI/GDI+/Direct3D на винде), некоторые - кроссплатформенные, как, например, OpenGL. Низкоуровневые API работают непосредственно с драйверами и с различными системными структурами для реализации необходимых графических задач (нарисовать треугольник/прямоугольник), более высокоуровневые библиотеки могут быть "надстройками" над низкоуровневыми API и предоставлять уже другие интерфейсы, более удобные для программиста.
3) в зависимости от задачи, выбирают нужный графический API/библиотеку. Например, крупным игроделам обычно нужна высокая производительность и максимальная эффективность их движков, поэтому они обычно берут низкоуровневое API вроде Direct3D/OpenGL (они кстати отлично работают с C++, для D3D это "основной" язык, для OpenGL основной язык - Си).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы