mingw 編譯 glfw3 的 helloworld


glfw3 為基礎開發 GUI 似乎是一個不錯選項,有很多人嘗試這么做了。今天也小試一把。

工具: mingw(不是 mingw-w64),頭文件 GLFW/ ,庫文件 glfw3.dll

需要注意,mingw-w64 的話,glfw3.dll 版本要匹配。需要用 mingw-w64 重新編譯?

openGL 基本上 windows 都已經有安裝了,不需要額外安裝。(確認 C:\Windows\System32\opengl32.dll 存在)

代碼:

#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;
}

編譯指令:

gcc test.c glfw3.dll -lopengl32

第一次編譯的時候,因為沒有添加 -lopengl32,一直報錯,找了好久:

undefined reference to `__imp_glClear'

添加 -lopengl32 之后就沒問題了。

 =========================================

另外還有兩個使用 glad 來載入 openGL 的例子。可以看下面:

helloworld

=========================================

關於 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 基礎。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM