2026/03/04(水) [n年前の日記]
#3 [nim] Nimでnglfwを使う
OpenGLを利用する際はウインドウの生成その他の処理を別の何かで行うけれど、GLUT、freeglut、GLFW 等を利用する場合が多い。ただ、それらの .dll が別途必要になると言われることも多く…。
NimでGLFWを使いつつ、exeファイル1つの中に GLFW まで含めてしまうことができる、nglfw というライブラリがあるらしい。
_RowDaBoat/nglfw: Statically linked GLFW 3.x for Nim
GLFWのソース自体を一緒にビルドしてしまうことで、DLLの添付を不要にするらしい。気になったので試用してみた。環境は Windows11 x64 25H2 + Nim 2.2. 64bit。
NimでGLFWを使いつつ、exeファイル1つの中に GLFW まで含めてしまうことができる、nglfw というライブラリがあるらしい。
_RowDaBoat/nglfw: Statically linked GLFW 3.x for Nim
GLFWのソース自体を一緒にビルドしてしまうことで、DLLの添付を不要にするらしい。気になったので試用してみた。環境は Windows11 x64 25H2 + Nim 2.2. 64bit。
◎ インストール :
インストールは以下だろうか。githubのURLを指定すればインストールできる模様。
ちなみに、git clone や zip のダウンロードでは、nglfw/src/glfw の中身が空になってしまうので、利用するにはもう一手間が必要。
_nglfw/src at master - RowDaBoat/nglfw
件のディレクトリは github上の特定のプロジェクト ―― この場合はGLFWのリポジトリへのリンクを示す機能を使っているので、ただダウンロードしただけでは中身が空になってしまうらしい。nimble install ならリンクを辿って入手してくれるっぽい。
nimble install https://github.com/RowDaBoat/nglfw
ちなみに、git clone や zip のダウンロードでは、nglfw/src/glfw の中身が空になってしまうので、利用するにはもう一手間が必要。
_nglfw/src at master - RowDaBoat/nglfw
件のディレクトリは github上の特定のプロジェクト ―― この場合はGLFWのリポジトリへのリンクを示す機能を使っているので、ただダウンロードしただけでは中身が空になってしまうらしい。nimble install ならリンクを辿って入手してくれるっぽい。
◎ サンプルをビルド :
以下にサンプルがある。
_nglfw/examples at master - RowDaBoat/nglfw
helloclear_OpenGL.nim をビルドしてみた。
_nglfw/examples/helloclear_OpenGL.nim at master - RowDaBoat/nglfw
生成された helloclear_OpenGL.exe を実行してみたら真っ赤なウインドウが表示された。ESCキーで終了することもできた。
ファイルサイズは585KB。小さ過ぎないか…? DLLが別途必要なのでは…?
Dependencies 1.11.1 x64 で .exe を調べてみたら、GLFW.dll 等は要求されていなかった。
_lucasg/Dependencies: A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
たしかに、GLFWを使いつつ、exeファイル1つで済みそう。
_nglfw/examples at master - RowDaBoat/nglfw
helloclear_OpenGL.nim をビルドしてみた。
_nglfw/examples/helloclear_OpenGL.nim at master - RowDaBoat/nglfw
nim c -d:release helloclear_OpenGL.nim
生成された helloclear_OpenGL.exe を実行してみたら真っ赤なウインドウが表示された。ESCキーで終了することもできた。
ファイルサイズは585KB。小さ過ぎないか…? DLLが別途必要なのでは…?
Dependencies 1.11.1 x64 で .exe を調べてみたら、GLFW.dll 等は要求されていなかった。
_lucasg/Dependencies: A rewrite of the old legacy software "depends.exe" in C# for Windows devs to troubleshoot dll load dependencies issues.
たしかに、GLFWを使いつつ、exeファイル1つで済みそう。
[ ツッコむ ]
以上です。