Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на языке C или C++

- Ученик (102), открыт 2 недели назад
Я слышал что языки C и C++ позволяют напрямую взаимодействовать с памятью, а пиксели на экране тоже хранятся в памяти. Так вот можно ли взаимодействовать с адресом этих пикселей чтобы менять их и отрисовывать картинки? Я знаю что это сложно муторно и не нужно, НО МНЕ ЭТО НУЖНО. если это возможно то как определить с какого адреса начинается 1 пиксель и в каком адресе заканчивается последний.
3 ответа
Рустам Абдрашитов Мыслитель (9508) 2 недели назад
Пример кода на C++
Вот пример кода, который показывает, как можно создать изображение и изменить цвет определённого пикселя:
 #include <iostream> 
#include <vector>

struct Pixel {
unsigned char r, g, b; // Цвета RGB
};

int main() {
const int width = 800; // Ширина изображения
const int height = 600; // Высота изображения
std::vector<Pixel> image(width * height); // Создание массива пикселей

// Изменение цвета одного пикселя
int x = 400; // Позиция по горизонтали
int y = 300; // Позиция по вертикали
image[y * width + x] = {255, 0, 0}; // Установка цвета красного

std::cout << "Пиксель (" << x << ", " << y << ") установлен в красный." << std::endl;
return 0;
}
-Ученик (102) 2 недели назад
Я так понимаю здесь создаётся отдельное окно? Мне нужно как бы из глубин системы. Конкретно видеопроцессор память и монитор в подчинении оставить себе. То есть прервать операцию отрисовки рабочего стола, чтобы вообще "разобрать да винтиков и поменять их" но само собой, чтобы можно было вернуть всё назад.
Андрей - Профи (870) -, Для этого нужно взаимодействовать напрямую с железом. НИ ОДИН высокоуровневый язык этого не может
Капиталист Коллаборация Мудрец (11817) 2 недели назад
В DOS можно было и напрямую. Современная операционная система с защитой памяти такой возможности не даст, для этого нужны какие-то api.
Андрей - Профи (870) 2 недели назад
Формирование изображения происходит в видеокарте, если имеется ввиду поменять пиксели при выводе на экран, то это сделать невозможно. Для этого нужно переписывать алгоритмы драйверов видеокарты. Из операционной системы это контролировать нельзя
-Ученик (102) 2 недели назад
Тогда можно ли сделать так:
Отправить команду видеокарте, например чтобы она закрасила пиксель на позиции X:1 Y:1 в красный цвет? Мне нужно как можно меньше "промежуточных операций" для быстродействия, поэтому я и ищу способ как можно ближе взаимодействовать с видеокартой.
Андрей - Профи (870) -, Нельзя с помощью программ управлять напрямую видеокартой в такой степени. Нужно тогда менять прошивку самой видеокарты и внедрять в неё необходимые функции
Похожие вопросы