問題
WSL2でSDL2を利用したアプリケーションを作成, ホスト側のVcXsrvに実際の内容を描画させようとしたが、しばしばtextureがただの白い箱として描画されてしまう。
解決策
Rendererに指定されているdeviceに問題があると思われるのでSoftwareレンダリングを利用する。
SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
この時第二引数が-1
になっていないと3つ目のフラグが反映されないので注意
もう少し細かい話
- CreateRendererは第二引数が
-1
の場合、flagの条件を満たすdriverから優先度の高いものを選択する - 実際に使われているドライバを調べる
SDL_GetRendererInfo
-
LIBGL_ALWAYS_INDIRECT=1
がセットされているとopenglは使われないがなぜかes版の方は選択肢として残ってしまう(そしてこれが特定の環境ではうまく動かない)