0
どのようにしてスクロールコンソールをレンダリングできますか?例:レンダリングコンソール
メモリ内容(フレーム0):
Line 0
Line 1
Line 2
Line 3
Line 4
メモリ内容(フレーム1):
Line 5
Line 1
Line 2
Line 3
Line 4
フレーム1に対する対応する画面出力:
Line 1
Line 2
Line 3
Line 4
Line 5
テキストはフレームバッファオブジェクトにレンダリングされます(一部のラッパーが含まれます):
auto N=r_console->rowsCountGet();
for(size_t k=0;k<N;++k)
{
glUniform3f(m_voffset_loc,0.0f,r_console->lineOffsetGet(k),0.0f);
m_faces.dataSet(r_console->facesGet(k),GL_STATIC_DRAW);
m_faces.draw();
}
メモリ順にメモリ内容を描画する些細なConsole::lineOffsetGet
のレンダリング作品:それはk
は、メモリ内のラインである
auto n_rows=rowsCountGet();
return -static_cast<float>(2*k)/static_cast<float>(n_rows);
です。 Console::lineOffsetGet
を変換する方法(最下行に最新の行を配置する方法)が見つかりません。メモリk
の行を適切なy
座標にマップする必要があります。メモリ内のラインを与えられたスクリーン上のラインを計算するための式を見つける必要がある。私は
m_line_current
増加はゼロから始まるコンソールに書き込ま
auto n_rows=rowsCountGet();
auto m_line_current<=n_rows? //If current line fits on the screen it is trivial
k : (k+ (n_rows-(m_line_current-n_rows)%n_rows))%n_rows;
return -static_cast<float>(2*k)/static_cast<float>(n_rows);
を試みてみました。これは2つの画面ページで動作しますが、3つ目のページの先頭で壊れます。