1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Windowsでもフレームバッファ(をシミュレート)したい

Posted at

概要

Linux のフレームバッファ(/dev/fb0) を使ったアプリを開発するのにデバグが面倒なのでなんとかしたい。

いまなら SDL2 とかのフレームワークを使えばいいんだけど、昔ながら環境だと

  • Linux系(たとえば RaspberryPI)でしか開発できない
  • セルフビルドだとビルドがクソ遅い
  • クロス環境作るのも面倒

ということで、Linux と Windowsで共通の互換クラスを作ってしまえばいいんだ。

互換クラス

作ったんのがコレ。
https://gitlab.com/nekodevteam/brainux/-/tree/main/framebuffer

公開メソッドは最小限

framebuffer.h
/** @brief frame buffer class */
class CFrameBuffer
{
public:
  CFrameBuffer();
  ~CFrameBuffer();
  bool Open();
  void Close();
  void* GetPtr();
  const fb_var_screeninfo* GetScreenInfo() const;
  void Update(bool bRedraw = false);
};

Windows

  • コンソール アプリから使える
  • ウィンドウを作成してビットマップを貼り付け、そのイメージポインタを返す
  • フラッシュ用のヒントのために更新メソッドを追加
  • スクリーン情報は linux/fb.h な struct fb_var_screeninfo を返す
    fb.png

Linux (ここでは SHARP Brain)

本番。

  • /dev/fb0 を開く
  • mmap する
    tty.png
    IMG_4739.JPG

こんな感じで Windows でも Linux でも同じ表示が行えますよ・・・と。
これで色々捗る。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?