Изменение режимов отображения из командной строки

Давным-давно в тот день пытались выучить C из книги по программированию игр. Если я правильно помню, одна из первых вещей, которую сделал бы ваш игровой "движок", - это переключить режимы отображения на рендер. Для переключения в режим отображения 640x480 (возможно, режим 13) потребовалось немного ассемблера, чтобы вы могли рисовать прямо на экране. Что-то вроде того.

У меня вопрос, каков современный эквивалент этого? Я заинтересован в написании программы командной строки, которая делает что-то подобное; переходит в какой-то растровый режим, к которому я могу обратиться, но я не предполагаю, что моя программа будет работать под управлением какого-либо оконного менеджера, такого как kde, unity,Aqua и т. д.

Будет ли это что-то, что может предоставить OpenGL (или же OpenGL предполагает наличие менеджера окон). Моя предложенная программа не является игрой, но в идеале она должна начинаться с простого ясного экрана, на котором я могу рисовать примитивы (2d линии, круги и т. Д.)

Ура!

1 ответ

Решение

Современные операционные системы не предоставляют программистам столь же удобный доступ к низкоуровневым графическим подпрограммам, как раньше. Частично, это связано с появлением графического процессора, который делает использование графического оборудования гораздо более сложной задачей, чем если бы у вас был только процессор. Другая причина в том, что оконные менеджеры становятся все более и более сложными, графическая песочница, которую каждая операционная система дает программисту, более ограничена.

При этом OpenGL определенно стоит посмотреть. Он кроссплатформенный, универсальный и автоматически использует любое доступное оборудование (включая видеокарту). OpenGL сам по себе не предоставляет прямого доступа к контексту окон, но вы можете легко создать его с помощью служебной библиотеки OpenGL (GLUT). OpenGL, однако, очень низкоуровневый, вам придется иметь дело с буферами кадров, сбросом и битовыми масками, а также со всякой ерундой низкого уровня, которая может сделать разработку OpenGL кошмаром, если вы этого еще не сделали.

Если бы я начинал проект, я бы, вероятно, хотел бы более надежную графическую среду, которая обеспечивает функции рисования и создания окон из коробки. И SDL, и SFML предоставляют низкоуровневые графические API-интерфейсы, с которых будет немного удобнее начинать. Они оба реализованы поверх OpenGL, так что вы можете использовать любые функции OpenGL, когда захотите, но вам не нужно беспокоиться о некоторых более утомительных деталях.

Как примечание, C может быть не лучшим языком для начала работы с графическим программированием в наши дни. Если вы хотите действительно простую графическую среду, которая становится все более актуальной с каждым днем, вы можете проверить, что может предложить Интернет. JavaScript и HTML5Canvas предоставляют очень простой интерфейс для рисования примитивов, изображений и т. Д.

Другие вопросы по тегам