Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/22: Рейтинг темы: голосов - 22, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66

Саааамые низкоуровневые библиотеки для доступа к ОС

16.07.2019, 11:27. Показов 4905. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Если мне нужен сааааамый низкий доступ к системе, к каким инструментам я должен прибегнуть?(и есть ли в этом смысл?)


Мои собственные исследования всемирной паутины привели к:

1.Win api для Виндовс (win32/win64 какая из них будет лучше??)

2.Xlib/Wayland для Linux

Если вышеупомянутые инструменты, это то что я ищу, то как обстоят дела с поддержкой/сложностью/смыслом ?

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

такие как glfw например?


(С учетом того что я планирую (учится)разрабатывать сложные графические приложения, как графические движки и т.п.)

+Экстра вопрос:
Как видеокарта понимает какие данные обрабатывать,или наоборот - как запускать код на видеокарте а не на процессоре?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.07.2019, 11:27
Ответы с готовыми решениями:

Какую технологию выбрать для создания библиотеки доступа к данным (C#.NET + MSSQL Server)
Доброго времени суток, уважаемые гуру программирования на C#.NET! В общем передо мной встал вопрос о создании библиотеки на...

Низкоуровневые функции С++
Здраствуйте. Внизу код, который выполняет такую задачу: С использованием автосборщика make написать программу, открывающую текстовый...

Низкоуровневые тонкости программирования на С++
Здравствуйте. Хотел бы узнать у опытных программистов, где можно найти литературу по более продвинутым вопросам программирования с С++,...

12
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
16.07.2019, 11:57
А зачем плодить темы, если уже спросил тут - Саааамые низкоуровневые библиотеки для доступа к ОС ?

Бери OpenGL и разбирайся с ним. Оно и для линуксов, и для винды. glfw - надстройка над OpenGL.

Код на видеокарте запускать в обычном смысле слова нельзя. Можно только встраивать свои алгоритмы в механизмы расчётов в виде подпрограмм, называемых шейдерами. Опять же, для того чтоб что-то там делать, нужно знать линейную алгебру (раздел математики, изучающий матрицы, векторы, тензоры, их преобразования и связь этого всего с геометрией) и собственно геометрию.

Если захочешь что-то делать для винды - можешь потом взяться за DirectX.

Более низкоуровневое чем 2 данные библиотеки - непосредственно API винды/линукса.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
16.07.2019, 11:58
Цитата Сообщение от anton3d Посмотреть сообщение
win32/win64 какая из них будет лучше?
Что?..
Цитата Сообщение от anton3d Посмотреть сообщение
Если вышеупомянутые инструменты, это то что я ищу
Откуда нам знать что вы ищете?..
Цитата Сообщение от anton3d Посмотреть сообщение
как обстоят дела с поддержкой/сложностью/смыслом ?
Что??..
Цитата Сообщение от anton3d Посмотреть сообщение
Есть ли смысл обращатся к низкоуровневым инструментам, когда существуют вещи попроще и попонятнее, такие как glfw например?
Какой-то бред. Как это связанно? Это вообще разное.
Цитата Сообщение от anton3d Посмотреть сообщение
С учетом того что я планирую (учится)разрабатывать сложные графические приложения, как графические движки и т.п.
Начните лучше с чего попроще, там незнаю, с архитектуры ПК, например.
Цитата Сообщение от anton3d Посмотреть сообщение
Как видеокарта понимает какие данные обрабатывать
А как их понимает процессор?
Цитата Сообщение от anton3d Посмотреть сообщение
как запускать код на видеокарте а не на процессоре?
Какой код?
0
Злостный нарушитель
 Аватар для Verevkin
10238 / 5667 / 1260
Регистрация: 12.03.2015
Сообщений: 26,260
16.07.2019, 12:08
Лучший ответ Сообщение было отмечено anton3d как решение

Решение

Амбиции ТС не соответствуют действительности.
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
16.07.2019, 12:15  [ТС]
Спасибо большое
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
16.07.2019, 12:51
Цитата Сообщение от anton3d Посмотреть сообщение
С учетом того что я планирую (учится)разрабатывать сложные графические приложения, как графические движки и т.п.
DirectX, OpenGL, Vulkan.
0
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
16.07.2019, 13:47
Помнится, разбирался когда-то с DirectX 10. Елы-палы, там один Direct Draw - книга на 1300 страниц
0
 Аватар для COKPOWEHEU
4079 / 2677 / 432
Регистрация: 09.09.2017
Сообщений: 11,893
16.07.2019, 14:03
Цитата Сообщение от anton3d Посмотреть сообщение
Если мне нужен сааааамый низкий доступ к системе
А нужен? Са-а-амый низкий уровень нужен разве что для чего-то сильно экзотического, либо системного вроде драйверов, виртуализации или своей ОС. В остальных случаях лучше воспользоваться стандартными библиотеками, по возможности более высокого уровня.
Задачу написания этих библиотек уже решили другие люди, опираясь на них вы быстрее решите свою задачу.
Цитата Сообщение от anton3d Посмотреть сообщение
Есть ли смысл обращатся к низкоуровневым инструментам, когда существуют вещи попроще и попонятнее
Нет. Написать графику на низком уровне так же качественно вы не сможете, просто не хватит ресурсов. Готовые-то библиотеки обычно не одним человеком написаны. Кроме того, они хорошо протестированы и, зачастую, не для одной платформы.
Цитата Сообщение от jugu Посмотреть сообщение
Помнится, разбирался когда-то с DirectX 10. Елы-палы, там один Direct Draw - книга на 1300 страниц
А они его не забросили разве? Мне казалось DirectDraw умер после DX6, по крайней мере когда я им занимался, были проблемы с запуском соответствующего кода на более-менее современных системах и SDK.
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
16.07.2019, 14:30
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
DirectDraw умер после DX6
Вроде как вздохи в DX8 подавал.
0
Эксперт С++
 Аватар для _lunar_
3701 / 2836 / 451
Регистрация: 03.05.2011
Сообщений: 5,193
Записей в блоге: 21
16.07.2019, 14:53
Цитата Сообщение от anton3d Посмотреть сообщение
Если мне нужен сааааамый низкий доступ к системе, к каким инструментам я должен прибегнуть?(и есть ли в этом смысл?)
Мои собственные исследования всемирной паутины привели к:
1.Win api для Виндовс (win32/win64 какая из них будет лучше??)
WinAPI это документированная обертка над недокументированным NativeAPI, который является прослойкой доступа к ядру.
так что WinAPI это никакой не "сааааамый низкий доступ к системе"
ниже драйвера вы уже никуда не опуститесь начиная с Vista.
2
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
22.07.2019, 02:22
Лучший ответ Сообщение было отмечено anton3d как решение

Решение

Цитата Сообщение от anton3d Посмотреть сообщение
1.Win api для Виндовс (win32/win64 какая из них будет лучше??)
2.Xlib/Wayland для Linux
Если у вас тяга к программированию кроссплатформенных приложений, то берите OpenGL или Vulkan. Мне Vulkan показался сложнее, чем OpenGL. Я изучаю OpenGL. Я читал, что Vulkan также использует GLSL, как и OpenGL, поэтому знания GLSL и математики пригодятся и на Vulkan.

Цитата Сообщение от anton3d Посмотреть сообщение
Как видеокарта понимает какие данные обрабатывать,или наоборот - как запускать код на видеокарте а не на процессоре?
Начните изучать OpenGL и вам будет понятно, как загрузить данные на видеокарту. Можно начать с этих простых уроков для начинающих: learnopengl. Урок 1.1 — OpenGL / Хабр - Habr

Цитата Сообщение от anton3d Посмотреть сообщение
(С учетом того что я планирую (учится)разрабатывать сложные графические приложения, как графические движки и т.п.)
Есть легендарные уроки от ThinMatrix OpenGL 3D Game Tutorials. На данный момент я их изучаю. Особенно мне нравятся его уроки по загрузке из файла .dae и скелетной анимации персонажа, ничего лучше я пока не нашёл: OpenGL Animation Tutorials

OpenGL 3D Game Tutorials


OpenGL Animation Tutorials


Уроки на Java, но они легко переводятся на C++. Я использую C# для Desktop и TypeScript для WebGL.
0
2 / 2 / 0
Регистрация: 08.06.2018
Сообщений: 66
22.07.2019, 09:35  [ТС]
8Observer8, Благодарю : )
1
9037 / 2937 / 494
Регистрация: 05.10.2013
Сообщений: 7,962
Записей в блоге: 216
22.07.2019, 14:07
Самая лучшая книга для начинающих в: 3D, языке GLSL, математике компьютерной графики: WebGL. Программирование трехмерной графики

Очень рекомендую переводить примеры из с JavaScript на тот язык, который вам нравится.

Я перевожу на:
  • C#/OpenTK/OpenGL 3.1 (WinForms и WPF, а так же OpenTK имеет свои средства для создания окна из консольного приложения)
  • TypeScript. Потому что TypeScript - это строго типизированный, компилируемый язык. По-моему, TS является компонентно ориентированным языком, как и C#, но это неточно.

Из Википедии: https://en.wikipedia.org/wiki/Microsoft_TypeScript
Разработчиком языка TypeScript является Андерс Хейлсберг (англ. Anders Hejlsberg), создавший ранее Turbo Pascal, Delphi и C#.
Если будет желание начать изучать TypeScript и/или C#, то пишите, буду рад помочь. Подскажу, что нужно. Могу проконсультировать по Скайпу, если вы расшарите экран, чтобы как можно быстрее начать программировать.

Добавлено через 2 часа 31 минуту
anton3d, я вам приготовил очень короткий пример в песочнице, где вы можете авторизоваться через GitHub одни нажатием кнопки "Войти через Github" в верхнем правом углу. После авторизации можно сделать копию примера, нажав кнопку Fork в левом верхнем углу. Теперь вы можете приступить к программированию на WebGL и GLSL, сохранять свои примеры на кнопку Save в песочнице, делить ссылкой с друзьями в VK и с форумчанами. Каждый сможет запускать ваши работы на свой ОС и даже на смартфоне или планшете под управлением ОС: Android и iOS. Представляете, как быстро - вы нажимаете кнопку Save и ваше приложение доступно на всех основных платформах, где есть браузер с поддержкой WebGL.

WebGL и OpenGL - это практически одно и тоже. Сравните код на C++ и на TypeScript, который задаёт цвет фона (gl.сlearColor) и заливает весь экран заданным цветом (gl.clear). В данном случае весь холст будет залит тёмно-зелённым цветом:

C++
1
2
glClearColor(0.0f, 0.4f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
JavaScript
1
2
gl.clearColor(0.0, 0.4, 0.0, 1.0);
gl.clear(gl.COLOR_BUFFER_BIT);
То есть вы можете читать книгу Мацуды и Ли по WebGL и переводить примеры на C++, C#, TypeScript, Java, и т.д. На всех этих языках код будет почти одинаковый, за исключением незначительных нюансов.

Объясню подробно работу примера, что я привёл выше. Ещё раз приведу ссылку на песочницу с примером.

Первое, что нужно - это создать HTML5 элемент <canvas> в теле index.html:

HTML5
1
2
3
4
5
<body>
    <canvas id="renderCanvas" width="256" height="256">
        Your browser does not support HTML5 "canvas" element.
    </canvas>
</body>
Из кода получаем ссылку на элемент <canvas> по Id:

JavaScript
1
let canvasElement = document.getElementById("renderCanvas") as HTMLCanvasElement;
Получаем WebGL контекст рисования по ссылке на полученный элемент <canvas>:

JavaScript
1
let gl = canvasElement.getContext("webgl");
Задаём цвет очистки холста тёмно-зелённым:

JavaScript
1
gl.clearColor(0.0, 0.4, 0.0, 1.0);
Очищаем холст, используя установленный ранее цвет очистки холста:

JavaScript
1
gl.clear(gl.COLOR_BUFFER_BIT);
Добавлено через 43 минуты
Я забыл скопировать весь код:

Program.ts

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
class Program
{
    public static Main(): void
    {
        let canvasElement = document.getElementById("renderCanvas") as HTMLCanvasElement;
        let gl = canvasElement.getContext("webgl");
 
        gl.clearColor(0.0, 0.4, 0.0, 1.0);
        gl.clear(gl.COLOR_BUFFER_BIT);
    }
}
 
Program.Main();
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2019, 14:07
Помогаю со студенческими работами здесь

про библиотеки в VS C++ (какие библиотеки нужны для функций 'cout' и 'cin')
какие библиотеки нужны для функций 'cout' и 'cin' ???

Низкоуровневые функции работы с файлами
Добрый день. Подскажите, пожалуйста, какие есть низкоуровневые функции работы с файлами? спасибо

На чем писались низкоуровневые функции winapi
Жажду знаний, как оно все делается на супернизком уровне. На чем писали винапи? На ассемблере?

Низкоуровневые сокеты. Udp клиент-сервер
Здравствуйте.Помогите пожалуйста поправить код сервера,принимающего сообщение от клиента и выводящего его на экран.клиент компилируется,а...

Низкоуровневые средства ввода вывода в UNIX
Здравствуйте!!! Помогите пожалуйста!! Вот задание. Описать функцию, удваивающую в заданном файле каждую очередную четверку байт. При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru