0
1

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 3 years have passed since last update.

llvm-mingw(clang) + imgui + wine64 で HW accelerated OpenGL 3.3 GUI アプリを開発実行する

Last updated at Posted at 2020-06-01

背景

  • OpenGL で HW accelerated が必須もしくは強く推奨される C++ アプリを開発している
    • 多量のポリゴン描画するとか, shader 使うとか
    • UI ほしいので, imgui 使う
    • Windows, Linux 両方で動かしたい
    • Windows では基本リリース物(.exe)が動けばよいので, 開発時は慣れきった Linux で行いたい
  • clang address sanitizer を Windows でも使いたい

とりあえず OpenGL 3.3(NVIDIA GPU で確認)が HW acclerated(つまり CPU エミュレーションではなく GPU を使ってくれる)で動くのを確認しました.

インストール, 設定

llvm-mingw(clang) 入れます.

cmake, optional で ninja あたりもいれておきます.

libunwind.dll などへのパスを LD_LIBRARY_PATH に追加しておきます.

OpenGL 開発環境としては, glad https://glad.dav1d.de/ で extension loader, glfw3 で画面生成環境を作るのが推奨です.

imgui では glfw3 + opengl3 を使います(OpenGL 3.3+ の機能を使わないのであれば, opengl2 でもいいかも)

あとは cmake で llvm-mingw cross するように CMakeLists.txt を書き書きします!
(MinGW gcc を使う場合も同等)

wine64 を入れます.

apt で入るのでも行けるかもしれませんが, 今回は執筆時点で最新 stable 5.0 を使いました.

Ubuntu 18.04 に WINE 最新版(2020/05/10 時点 stable 5.0) apt package をインストールするメモ
https://qiita.com/syoyo/items/69d25664ab0e7f537ae8

a.exewine64 a.exe で起動するのはめんどいので, a.out のように ./a.exe のようにして起動できるようにします.

binfmt + wine で Windows バイナリを Linux で ./a.exe のようにして実行するメモ
https://qiita.com/syoyo/items/9fd8758ea3878c36e807

これで完成です!

wine 独自の OpenGL 設定などは不要でした.
wine の OpenGL 実装が, うまく Linux 側の OpenGL ドライバを叩いてくれているようです.

発展

Windows に VNC や RDP で繋いで, IDE としては Visual Studio をつかう.

Windows 機を別途用意します.
ディスクを NFS or samba なりでマウントしておき, git repo フォルダを Windows と Linux マシンで両方から見えるようしておく.

Windows で OpenGL/Vulkan アプリを動かして画面をイントラネットで VNC などで転送したいメモ
https://qiita.com/syoyo/items/909f5915252ba5f197a0

快適なテキスト編集のために, 画面転送オプションで非圧縮モードを選びましょう!

TODO

0
1
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?