Как создать графический холст в чистом c для отображения графических фигур без каких-либо библиотек и платформозависимых - PullRequest
0 голосов
/ 25 декабря 2018

Я думаю, что возможно создать графическую библиотеку без какой-либо другой библиотеки.

Просто нарисуйте круги, треугольники и прямоугольники с базовой математикой.Если да, то где смысл делать «рисованную область»?

Можно ли рисовать на экране в чистом C или требуется сборка?

1 Ответ

0 голосов
/ 25 декабря 2018

Графическое программирование изначально зависит от платформы.Допустим, ради аргумента, было только две операционные системы: linux и windows.Вы можете использовать специфичные для платформы функции на обеих из них, чтобы создавать окна и рисовать что-то.Для вашего приложения быть «независимым от платформы» в этом контексте означало бы определять, на какой ОС вы работаете (скажем, с помощью определения препроцессора во время компиляции), и использовать различные системные вызовы, основанные на этом.Однако, это становится действительно грязным, очень быстрым.

Это становится еще хуже, когда вы говорите о 3D (или 2D с аппаратным ускорением), потому что разные видеокарты снова ведут себя по-разному.Итак, опять же, даже если бы было только две видеокарты (плюс две операционные системы), вы уже находитесь в четырех разных случаях для одной и той же базовой операции, скажем, рисования круга внутри окна.

Вы можете это сделать?

Технически, да.Но графические библиотеки существуют именно потому, что большинство людей этого не хотят.

Что бы я лично порекомендовал, если вы не хотите сильно полагаться на сторонние библиотеки, это использовать OpenGL.Да, это библиотека, но она предустановлена ​​на большинстве систем.

Если вы действительно хотите создать свою собственную независимую от платформы графическую библиотеку, я бы посоветовал сначала освоиться с существующими, просто чтобы почувствоватьза то, что вовлечено в создание чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...