CのLinuxバッファーへの迅速で汚れたキャラクター - ハードウェイ - 「グリフアレイ」、アレイFU、ポインターFUを備えていますが、胸、爆発、または車の追跡はすべてキャラクターに関するものです。 Linuxバッファーの画面に文字を配置することを検討するとき、私はデータのディスプレイを作成したかったのですが、コンソールの実際のテキストは、このプロジェクトに襲われたBarbones非Gui Raspberry Piで小さすぎました。このプロジェクトは、LinuxでのFrameBuffer処理の良い例である他の作業に基づいています。 http://raspberrycompote.blogspot.com/2015/01/low-level-graphics-on-raspberry-pi-part.htmlを参照してください。そのため、このプロジェクトで行われたものは、文字と数字を表す1と0のアレイが作成され、これらの配列は、実際のペキセルで繰り返されます。フォントはエイリアンセントリーガンに基づいています。 https://www.youtube.com/watch?v=hqdy-5iqvuuこのデモは、すべてのシステムが速く、HDMI画面(私の場合は過熱しないでください)を持っているわけではないと仮定しています。
vinfo.bits_per_pixel = 8;
色の値の範囲は0〜15です。これはもちろん最も深い色ではありません。この「深さ」を上げると、物事を遅くすることができますが、より広い色の色が得られます。そしてこれら:
vinfo.xres = 1184;
vinfo.yres = 624;
あなたの画面は、それがHDMIであろうと、おそらくいくつかのTFT LCDであろうと - /dev /fbnを正しく取得する限り、linux framebufferルーチンには関係ありません。したがって、画面の寸法と「深さ」は異なる可能性があります。古いノワール赤外線ラズベリーカメラからの出力をうまく処理するTFT LCD画面がありますが、コンバージョンなしでX32ビットマップを試してみてください。私の目標全体は、「画面にテキストを取得するだけ」でした。アレイは、「エイリアンオートガンフォント」に近いものと、必要な場所、XとYなどに基づいて特定の色の値にピクセルを設定するために書かれたルーチンを使用して作成されました。
そこから他のいくつかのルーチンが生まれました:文字列の印刷。番号ディスプレイを印刷します。境界線と線で塗りつぶされた、または中空の長方形。
このデモは少しのアニメーションを示していますが、それは目標ではありません。一種の「バッファフリッピング」アプローチを使用します。これは、ほとんどのグラフィックスが機能する方法です。最初にアレイのようにメモリスペースに書き込み、サイズと色の深さ、色の値、そして「ブリット」(おそらく1990年代の古い単語)に等しいメモリが画面にマッピングされた同じメモリになります。これにより、ある画面から他の画面への非常にスムーズな移行が可能になります。
したがって、アニメーションは可能ですが、目標ではありません。 「バックバッファー」のすべてにとって、画面バッファーに書き込みます。 Raspberry Conpoteのコードなど、この種のコードがダウンしたら、そのバックバッファーに対して何をするかは、謙虚なテキストから3Dレンダリングまでのビジネスです。
このデモは、古いシステム以下のシステムが使用されている可能性があると想定しています。したがって、すべてのキャラクターはブロックにあります。アレイで表される実際のグリフは、「配列へのポインター」アレイを介して「保持」されます。ブロックでは、この配列は配列データへのポインターが割り当てられているため、ブロックが渡されると、それらのオブジェクトはなくなります。これにより、使用するキャラクターを選択して選択し、残りを破棄できます。また、2つのフォントサイズを表す2つの配列があります。それぞれが128の要素であり、n番目の要素は文字の符号なしのINT値に対応します。したがって、そのため、スペースは要素32にあります。「S」のASCII値は83であるため、配列の83番目の要素はSの配列へのポインターです。
数字の配列は、数値を表す配列を指す要素であるためにも使用されます。これは、文字に使用されるアトイコールを私たちに免れます。
全体として、第1世代のシングルコアラズベリーでテストされた、それはかなり速かった。結果は異なる場合があります。それはずっと基本的なCコードです。
画面にキャラクターにする他の方法があります。しかし、柔軟性とシンプルさを確保するために、この迅速で汚い測定を選択しました。このコードの「配列FU」も他のことに役立つことが証明される場合があります。配列は、いかなる種類の文字や番号、またはグリフである必要はありません。たとえば、スプライトなど、必要なものです。使用する画面とプロセッサによって制限されます。
より派手なフォントが必要な場合は、インターネット上に「実際の」フォントを取得してピクセルに変換するデモがあります。これらをビットマップを読み取り、色の値の配列に変えるプログラムなど、これらを配列に入れることができれば、このプログラムのフォントとして使用できます。これらはすべて、2Dアレイとしてコードで表示されていますが、実際には1Dアレイであることに注意してください。したがって、あなたはあなたの配列の寸法がどうあるべきかを事前に知る必要があります。このデモの配列は手動で作成されました。 ASCII範囲全体 - 128文字は完了していません。したがって、小文字や句読点など、そこにないものが必要な場合は、自分で作成する必要があります。さらなるメモ:800x600の解像度でBeagleBoneのDebianインストールのセグメンテーション障害に注目していますが、同じHDMI画面を使用しています。好奇心旺盛。結果はシステムとOSによって異なります。ビーグルボーンでは、デフォルトのピクセル深度が低くなっています。両方のシステムは非GUIシステムです(GUIは主婦向けです)。 RasperryでうまくいったYres * 2のトリックで「拡張された」バッファーを取り除くと、初期化エラーがなくなり、Atari 2600 Flickerが育ったのと同じマイルドなアニメーションが可能になることがわかりました。書くための別のアレイが、代わりに古い学校の方法でスクリーニングするために「ブリット」することを想像してください。代わりに機能するかもしれません。グラフィックスの低い解像度のみは、Debian Beagleboneのみを与えてくれます。また、Raspberry Piで使用したのと同じ「ピクセル深度」で、バッファにピクセルを入れると、15を15以上色にすることができることに気付きました。ラズベリーはそれを窒息させますが、ビーグルボーンは窒息しませんでした。これにより、より多くのカラーオプションが可能になります。すべてのシステムが異なるため、常に実験する必要があります。このコードを楽しんでください。