LCDディスプレイ付きの組み込みLinuxシステムでSDL2デモを実行するには?

LCDディスプレイ付きの組み込みLinuxシステムでSDL2デモを実行するには?

私は、LCDディスプレイを内蔵した組み込みLinuxシステム(5.10.24)を開発しています。
(シリアルコンソールで)SDL2の例を実行しようとしましたが、失敗しました。
サンプルコードは次のとおりです。

#include "SDL2/SDL.h"

int main(int argc, char* argv[])
{
        SDL_Window* window;
        SDL_Renderer* renderer;

        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
                printf("error initializing SDL: %s\n", SDL_GetError());
                return 1;
        }

        window = SDL_CreateWindow("SDL_RenderClear",
                        SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                                    512, 512, 0);

        renderer = SDL_CreateRenderer(window, -1, 0);
        SDL_SetRenderDrawColor(renderer, 64, 255, 128, 255);

        SDL_RenderClear(renderer);
        SDL_RenderPresent(renderer);

        SDL_Delay(5000);
        SDL_Quit();
        return 0;
}

としてコンパイルされますmips-linux-gnu-gcc -g2 sdl_ex1.c -I/sysroot/usr/include/ -Lsysroot/usr/lib/ -lSDL2 -lts -o sdl_ex1

シリアルコンソールで実行すると、次のエラーで失敗します。

~ # ./sdl_ex1
error initializing SDL: No available video device
~ # echo $DISPLAY

~ #

ただし、Ubuntu-20.04 VMのXtermでは正しく実行できます。新しいウィンドウを表示し、内容を表示します。 Ubuntu-20.04では、$ DISPLAYは ':1'です。

組み込みシステムには、2つのフレームバッファデバイス、/dev/fb0、/dev/fb1があります。しかし、libX11や他のXエントリはありません。

GUIはLCDディスプレイで実行されていますが、このシステムでSDLアプリケーションをどのように実行できますか?

ベストアンサー1

StackOverflowに関するKeltarとDavidのコメントに基づいて、ついに問題を解決しました。 directfbを使用してdirectfbとSDL2を使用してターゲットルートファイルシステムを再構築しました。その後、ターゲットシェルからエクスポートSDL_VIDEODRIVER = directfbを設定しました。

その後、SDL2の例を実行すると、ウィンドウを描画してウィンドウ内で再レンダリングできます。

これがまさに私が期待したものです。

おすすめ記事