在基于帧缓冲区的控制台中渲染字符的最快方法是什么?我正在使用XNU发行版中的iso_font.h
字体。
现在我正在使用这段代码来渲染一个字符,但它似乎效率不高:
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);
}
}
}
而且我还想知道是否可以简化此代码:
void fb_set_px(x,y,hex){
void*ptr = ((_base + (_bpr*y) + (_bpe*x)));
unsigned int *p = (unsigned int *) ptr;
*p=hex;
}
直到有太多行并且我需要重新绘制整个控制台(以滚动)时,它是不错的,此时会有很大的延迟。