Графика, часть 2

2025-12-12 21:50

Графика, часть 2

Большинство систем используют модель RGB (красный, зеленый, синий). Чтобы изменить цвет пикселя в координатах (X,Y = 10,12), необходимо вычислить его адрес (смещение) в массиве фреймбуфера. Если ширина экрана - w, глубина цвета - D, то смещение для пикселя (10,12) равно:

int x = 10; 
int y = 12; 
int offset = (y * w + x) * D;

Таким образом мы можем перекрасить любой пиксель экрана. К примеру:

// Пример адреса фреймбуфера 
// Настоящий вы можете получить от загрузчика или BIOS/UEFI 
unsigned int *framebufer = (unsigned int*)0xFFD00000; 
int screen_w = 1920; 
int screen_h = 1080; 
int screen_dept = 4; 

void draw_pixel(int x, int y, unsigned int color) { 
    int offset = (y * w + x) * D; 
} 

void test_framebufer() { 
    memset(framebufer, 0, screen_w * screen_h * screen_dept); // Очищаем экран 

    for (int i = 0; i < 10; i++) { 
        // Рисуем линию 
        draw_pixel(i, i, 0xFF000000); 
    } 
}
ТЕГИ: #osdev #graphics
_ НАЗАД