フレームバッファベースのコンソールで文字をレンダリングする最速の方法は何でしょうか?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;
}
行が多すぎるところまではまともで、コンソール全体を(スクロールするために)再描画する必要があります。その時点で、かなりの遅延が発生します。