Другие языки программирования и технологии

Как работают устройства ввода-вывода или как вывести пиксель на экран, не задействуя WinAPI и пр.?

Вот вопрос возник нубский, а как собсна это всё работает? Какой примерно должна быть программа на ассемблере, чтобы она нарисовала точку на экране? Ведь ассемблерской команды как таковой нет, а если есть готовые Windows функции, они полюбому должны теми же стандартными командами всё это делать. Как же виндоус рисует все окна/кнопки? Как OpenGL/D3D рисует? Что если дизассемблировать самую простейщую программу, которая рисует пиксель в левом верхнем углу, не задействуя готовые библиотеки/функции Windows (т. е. написана с чистого листа на асме) ?
Попрошу разжевать :D т. к. давно интересующая меня тема.
Marat D
Marat D
1 456
Какбэ функции винды сами не рисуют, а это делает драйвер вашей видеокарты, передавая ей данные об текущей картинке на экране.
Обращайтесь не к функциям, а к драйверу и получите то, что хотите.
В обход драйвера можно, но будет работать только с конкретной моделью видеокарты (вам самим придется написать для нее драйвер) , а другими видухами - облом, ведь каждая видеокарта устроена по своему и не зря ведь для каждой свой драйвер!
ZV
Zloy Volk
31 824
Лучший ответ
Marat D А где почитать про это всё?)) Как работают эти драйвера (как всё-таки они этот пиксель на экран выводят :D)
Пока есть ядро системы, но нет к ней оболочки, можно изгаляться на свой вкус, но после того как оболочка написана и сдана в эксплуатацию, что-то добавить своё, думаю, невозможно. Драйвер видеокарты пишется уже под существующую систему. Ваш пиксель в ней не учтён! Так что рисовать придётся в уже существующей графической оболочке и по её правилам.

http://smoking-room.ru/data/pnp/gui_history/
драйвер обычно открывается через CreateFIle, далее работа с ним напоминает работу с pipe'ом. Драйвер может общаться с устройством 2я путями: 1) через ассемблерные команды in\out (и тому подобные) , 2) Через регионы памяти, которые ассоциируются с видеокартой, т. е. драйвер копирует что-либо в стуктуру (буфер) , а менеджер памяти перенаправляет этот поток байтов в видеокарту
> не задействуя WinAPI
Задействовать API драйвера xD
Nvidia
Amd

Сам в этом нуб, но думаю, если нужно узнать, как работают API драйвера, нужно копать в сторону "написание собственных драйверов)) ".
АА
Алмас А
496