glfw3 爲基礎開發 GUI 彷佛是一個不錯選項,有不少人嘗試這麼作了。今天也小試一把。git
工具: mingw(不是 mingw-w64),頭文件 GLFW/ ,庫文件 glfw3.dllgithub
須要注意,mingw-w64 的話,glfw3.dll 版本要匹配。須要用 mingw-w64 從新編譯?windows
openGL 基本上 windows 都已經有安裝了,不須要額外安裝。(確認 C:\Windows\System32\opengl32.dll 存在)工具
代碼:oop
#include "GLFW/glfw3.h" int main(void) { GLFWwindow* window; /* Initialize the library */ if (!glfwInit()) return -1; /* Create a windowed mode window and its OpenGL context */ window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL); if (!window) { glfwTerminate(); return -1; } /* Make the window's context current */ glfwMakeContextCurrent(window); /* Loop until the user closes the window */ while (!glfwWindowShouldClose(window)) { /* Render here */ glClear(GL_COLOR_BUFFER_BIT); /* Swap front and back buffers */ glfwSwapBuffers(window); /* Poll for and process events */ glfwPollEvents(); } glfwTerminate(); return 0; }
編譯指令:ui
gcc test.c glfw3.dll -lopengl32
第一次編譯的時候,由於沒有添加 -lopengl32,一直報錯,找了很久:spa
undefined reference to `__imp_glClear'
添加 -lopengl32 以後就沒問題了。code
=========================================blog
另外還有兩個使用 glad 來載入 openGL 的例子。能夠看下面:開發
=========================================
關於 windows 下 openGL/GLFS/glu 會默認打開一個 cmd console,能夠參考這個這裏:
https://stackoverflow.com/questions/5995433/removing-console-window-for-glut-freeglut-glfw
我選取的是 FreeConsole() 這個方案,不過,須要在全部 include 的最前面添加 #include <Winsock2.h>。這個方案實際上是在程序開始之初,直接把 console 釋放掉,因此啓動 GUI 程序時,會有黑影一閃而過。
=========================================
GLFS+IMGUI 的一個 demo :https://github.com/urddru/imgui-glfw
項目使用 cmake 來編譯,可能須要小改點編譯規則,須要 cmake 基礎。