LINUX.ORG.RU

«всё есть файл» или как закрасить пиксель монитора...

 , ,


1

4

Уважаемые красноглазики (шутка) здравствуйте! Я прогер виндузятник. Опытный, надр%:?ченый. И я ни как в толк взять не могу почему в нормальной с виду операционке нет «файла» МОНИТОР?! Перерыл много чего читабельного и ни где не нашёл как получить возможность работать с монитором как с куском памяти (пардон файлом) как реализовать вызов функции по нажатию клавиши на клавиатуре и евентам мышки. СкажИте что линукс не для игр и мол иди мальчик арканоиды дальше пиши в своей винде или же посоветуйте для новичка как подойти к данной проблеме, что почитать, что пописать... У меня готов движок трёхмерки рядом с которым все директиксы с опенжлями отдыхают, но показать его адекватным (виндузятников я за таковых не считаю) программерам нет возможности! Обидно что творение 15 лет под названием визуальная память робота прозябает в дебрях форума разработчиков игр, вместо того чтобы превратиться в открытую и общедоступную базу данных реальной геометрии пространства... Вобщем кому не до 3.14зды прогресс спасайте. Ну или не спасайте! Есть подозрения что Линукс в принципе не способен обеспечить программиста доступом до пикселей монитора и до кнопок клавиатуры ибо - всё есть файл! :)... короче привет, да и наверное пока. ЗЫ проверка на вшивость - файл состоит из байтов или из битов? В байте сколько бит? char - это всегда 8 бит? спасибо заранее.



Последнее исправление: GlukH (всего исправлений: 2)

короче привет,

Привет!

Я прогер виндузятник.

Поскольку язык не указан, я считаю, что паскаль.

FreePascal+Lazarus умеет в GetDC(0).

да и наверное пока

Пока! Ты неинтересный, попытка откровенная слабенькая.

визуальная память робота

Точно пока.

E ★★★
()
Ответ на: комментарий от E

Ого! Спасибо не ожидал столько текста на мою персону (без сарказма)...

Сперва бейсик (БК-0100101010), потом GW, потом quick, потом асм 8086 DOS резиденты откатал нормально, потом Borland Turbo С, так глянул и забыл, потом винда QuickBASIC 7.0, потом Borland Compiler Win32, Потом Borland Builder 1.0, потом 6.0 катался много лет... с графикой сложно медленно но есть... Недавно появилось время на работе свободное и теперь Microsoft Visual Studio Express 2012 for Windows Desctop. На пикселях наваял движок, вся работа с графикой исключительно в BMP32 файле (в памяти ессно) ни каких библиотек. Как перенести под линукса без OpenGL и winx? Паскаль преподавал но в член не ставлю, плюсы рулят но только без объектов, моё это структуры и функции всё остальное от лешего... Буду признателен... Спасибо!

GlukH
() автор топика

почему в нормальной [..] операционке нет «файла» МОНИТОР?!

В Plan9 есть. Но это будущее, которым оно должно было быть...

Скриншот экрана:

topng </dev/screen >screen.png

Позиция мышки:

cat /dev/mouse

beastie ★★★★★
()

В слове «скажите» ударение не нужно ставить, оно очевидно.

Кури DRI. А также вместо C++ используй C.

Линукс, очевидно, способен обеспечить доступ к пикселям монитора. Или ты думаешь, что GUI работает в обход ядра?

Файл обычно состоит из байтов (с точки зрения пользователя libc). Если копать глубоко, то никакого файла на самом деле нету.

Хочется показать свои наработки под DOS — запусти их в DOSBox.

kvap
()
Ответ на: комментарий от beastie

это будущее, которым оно должно было быть...

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

x4DA ★★★★★
()
Ответ на: комментарий от x4DA

И что с того? Каждое приложение изначально бежит в своей собственной песочнице (namespace) и рисует в своём собственном окне (с точки зрения приложения — оно fullscreen, хоть и в окошке).

Да, и это всё было уже 20 лет назад.

В общем, почитай сначала, прежде чем говорить такие глупости.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 3)

нет «файла» МОНИТОР?!

за то есть X Server, который слушает по адресу localhost:6000. Т.е. через сеть интернет. (не бойся, снаружи этот сервер невиден).

Есть подозрения что Линукс в принципе не способен обеспечить программиста доступом до пикселей монитора и до кнопок клавиатуры

может. Магические заклинания: «gtkmm», «Qt». Заклинать гугл в новолуние.

ЗЫ проверка на вшивость - файл состоит из байтов или из битов?

из тех и из других

В байте сколько бит?

а почему вы спрашиваете?

char - это всегда 8 бит?

ВСЕГДА!!! по нашему стандарту POSIX. Слава GNU! поклонимся его логотипу!!! https://upload.wikimedia.org/wikipedia/commons/thumb/2/22/Heckert_GNU_white.s...

спасибо заранее.

пожалуйста.

emulek
()
Ответ на: комментарий от kvap

Если копать глубоко, то никакого файла на самом деле нету.

нет, просто ты прокопал сквозную дыру, и теперь в файле нет линукса.

emulek
()
Ответ на: комментарий от beastie

Кидай ссылку на API, почитаю.

topng </dev/screen >screen.png

Я что-то не подрубаюсь. Исходя из того, что ты сказал, /dev/screen для topng является песочницей (куда topng должен сам рисовать). Как скриноштинг будет работать в таком случае?

/dev/screen это конечно круто, но слишком переупрощение и не отвечает современным юзкейсам.

В линуск давно уже есть dri интерфейс, который вывешивает наружу /dev/dri/card* для каждого устройство. Приложение открывает этот файл и через ioctl-и может создать kms-ный буфер отрисовать туда что хочет (например при помощи видеокарты, а не попиксельно как в твоем /dev/screen) и отправить буфер выводиться на нужный crtc.

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

x4DA ★★★★★
()

Про фреймбуфер тебе уже сказали?

А веселенькие артефакты у меня на экране появлялись, когда я с кудой баловался, а нарушения памяти не отлавливал.

Если у тебя "готовый движок трехмерки", то он наверняка на куде или хотя бы openCL + использует DMA, иначе он не будет крутым, т.к. OpenGL заткнет его за пояс!

А раз так, то ты задаешь вопрос в стиле "я написал крутую штуку, но она не работает почему-то".

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от x4DA

приплыли

Я что-то не подрубаюсь. Исходя из того, что ты сказал, /dev/screen для topng является песочницей (куда topng должен сам рисовать). Как скриноштинг будет работать в таком случае?

topng читает из stdin, куда направляется данные /dev/screen, и пишет в stdout, который записывается в screen.png

anonymous
()
Ответ на: комментарий от anonymous

У меня есть приложение, в которой есть функция main. Какую функцию мне вызвать чтобы заюзать DMA?

x4DA ★★★★★
()

Недавно появилось время на работе свободное и теперь Microsoft Visual Studio Express 2012 for Windows Desctop.
плюсы рулят но только без объектов, моё это структуры и функции всё остальное от лешего...

Ты про Си слышал вообще?
И что такое winx?

CYB3R ★★★★★
()
Ответ на: комментарий от CYB3R

Ты про Си слышал вообще?

да.

И что такое winx?

нет, но я загуглил. Девочки лет 8 с сиськами как у 14и летних. А ноги были нормальными, но их вытянули в 3 раза. Жуткое зрелище.

emulek
()

Сперва бейсик (БК-0100101010), потом GW, потом quick, потом асм 8086

То есть, тебе, как минимум, за 30, а то и под 40 (БК-шки — это конец 80-х). И ты до сих пор не осилил английский и гугл до уровня, требуемого для того чтобы не задавать дурацких вопросов на ЛОРе?

Уходи.

alegz ★★★★
()
Ответ на: комментарий от beastie

Ну, из этих 36 могут, например, адресоваться независимо 3 по 12. Тогда байтом и будет 12.

alegz ★★★★
()
Ответ на: комментарий от anonymous

вообще topng не может рисовать в /dev/screen, т.к. в качестве входных данных он одномоментно получил дамп пикселей, не более.

anonymous
()
Ответ на: комментарий от x4DA

разверни свою мысль — нифига не понятно. (или прочитай следующий коммент)

anonymous
()
Ответ на: комментарий от beastie

А кое-где и 36 и другое любое удобное число.

Это всё-таки слово уже, туда влезает шесть 6-битных символа.

mix_mix ★★★★★
()

«всё есть файл»

не правильно,
правильно: «всё есть фэйл»

Bad_ptr ★★★★★
()

А можно было потратить полчаса на изучение SDL.

Алсо, обилие обсценной лексики в ОП, лично мне неприятно смотреть на говно в голове ТС.

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 1)
Ответ на: комментарий от x4DA

В блобе есть псевдо-DMA. Скажем, при помощи куды ты можешь напрямую работать с массивом вершин, а OpenGL уже будет отрисовывать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от kvap

педивикия

/* The Linux graphics stack adheres to Mesa 3D В компьютерах, Direct Rendering Infrastructure (DRI) — это интерфейс и реализация в виде свободного ПО, используемая в системе X Window System, позволяющая пользовательским приложениям безопасно получать доступ к видеоаппаратуре без необходимости использования X server (замедляющего этот процесс). Основное назначение DRI — обеспечение аппаратного ускорения Mesa, одной из реализаций OpenGL. Он также позволяет реализовать ускорение OpenGL на framebuffer console без запущеного X Server’а */ ЧЕЛОВЕК!!! буду курить авось поможет... спасибо! ЗЫ я тоже считаю что файл состоит из байтов. ну по крайней мере файл размером в пол байта мне ни кто так и не сумел показать... :(... а копать глубоко ну его в пень - мне квантов и планковской длины хватает... http://www.gamedev.ru/files/?id=85471 http://www.gamedev.ru/files/?id=78711 Shift - ускорение + 1 Ctrl - ускорение + 10 WASD+QE колесо мыши и левый клик

GlukH
() автор топика

И я ни как в толк взять не могу почему в нормальной с виду операционке нет «файла» МОНИТОР?!

В линуксе ты его можешь создать. Напиши драйвер и всё будет пахать. Я молчу про всякие drm0 и fb0, потому, что не сильно волоку.

Теперь про нормальность. В СамойЛутшейОси есть con. Зачем ты полез в линукс? Подключаешь драйвер ansi и хоть зазакрашивайся.

ziemin ★★
()

братишка, не стадах херней, пиши на OpenGL, так как там все продумано
Ты можешь в /dev/dri/card# строчить, но за#@ешься
Что бы было круто, считай всякую хню через OpenCL

Visual Studio

Это IDE, я в нем пишу на Visual C plus plus, а ты на каком?

mystery ★★
()
Ответ на: комментарий от mystery

да понял я что без растеризации треугольников производительности не получить... вобщем согласен - OpenGL беру на вооружение... :(...

я вообще то сейчас на ST пишу.. :)... а под студией ясен перец С++! только с объектами я накололся - производительность меньше, понимание кода тоже, так что только struct void* char и прочие кошерные вещи...

GlukH
() автор топика
Ответ на: комментарий от GlukH

Под студией что угодно может быть
Я там и на C#, и на F# писал когдато

mystery ★★
()
Ответ на: комментарий от x4DA

Кидай ссылку на API, почитаю.

http://www.cs.bell-labs.com/sys/doc/names.html

Там есть про это.

В частности:

The bitmap device contains three files, /dev/mouse, /dev/screen, and /dev/bitblt, that provide an interface to the local bitmap display (if any) and pointing device.

When a process forks, the child process shares the name space with the parent. Several system calls manipulate name spaces.

One of the attributes is the name space: when shared, changes made by either process are visible in the other; when copied, changes are independent.

beastie ★★★★★
()

адекватным (виндузятников я за таковых не считаю) программерам

Я прогер виндузятник

buddhist ★★★★★
()
Ответ на: комментарий от Eddy_Em

OpenGL ничего не рисует. Рисует видеокарта в color buffer, который является часть frame buffer.

x4DA ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.