什麼是在基於控制檯的幀緩衝中渲染字符的最快方法?我正在使用XNU發行版中的iso_font.h
字體。在控制檯中繪製字符的最快方法(framebuffer)?
現在,我使用此代碼來渲染一個字符,但它似乎並沒有太有效的:
px = px* ISO_CHAR_WIDTH;
py = py* (ISO_CHAR_HEIGHT-1);
for (int i = 0; i < 15; i += 1)
{
int sym = iso_font[c*16+i];
int x = px;
int y = py + i;
for (int ii =0; ii < 8; ii++)
{
x+=1;
if ((sym & (1 << ii)))
{
fb_set_px(x,y,fg);
}
else
{
fb_set_px(x,y,bg);
}
}
}
而且我也想知道,如果這個代碼可以simpliefied:
void fb_set_px(x,y,hex){
void*ptr = ((_base + (_bpr*y) + (_bpe*x)));
unsigned int *p = (unsigned int *) ptr;
*p=hex;
}
這是體面的,直到線路太多,我需要重新繪製整個控制檯(滾動)在哪一點上有一個重大延遲。
非緩衝單個字符輸出永遠不會是快。在現代化的機器上這應該是一個非問題,但它仍然比人類能夠讀懂的更快。 –