Я пытаюсь изменить фреймбуфер на Linux. Я запускаю программу через виртуальный терминал (tty). Кажется, я не могу изменить пиксель, который хочу. Вот мой код:
#include <stdio.h>
unsigned char buffer[4 * 1366 * 768];
const int framewidth = 1366;
void placepixel(int x, int y, int r, int g, int b, int a){
buffer[(framewidth * y) + x] = b;
buffer[(framewidth * y) + x+1] = g;
buffer[(framewidth * y) + x+2] = r;
buffer[(framewidth * y) + x+3] = a;
}
void placepixelbynum(int i, int r, int g, int b, int a){
buffer[i] = b;
buffer[i+1] = g;
buffer[i+2] = r;
buffer[i+3] = a;
}
int main(){
for(int i = 0; i < 4 * 1366 * 768; i+=4){
placepixelbynum(i, 50,50,50,0);
}
FILE *write_ptr;
write_ptr = fopen("/dev/fb0","wb");
int x, y, z, xr, yr, zr;
while(true){
for(int i = 0; i < 128; i++){
placepixel(128+i,128,255,0,0,0);
}
fwrite(buffer,sizeof(buffer),1,write_ptr);
}
return 0;
}
Когда я запускаю это, экран становится серым (как и ожидалось), но строка помещается не там, где я ожидал. (Я хочу, чтобы он начинался с 128x128 и заканчивался 256x128), но он находится в правом конце экрана.