vala无法编译简单的示例glfw gl未找到

时间:2015-11-05 23:42:16

标签: glfw vala

编辑:这不是标题链接或包丢失的问题

我正在尝试从以下位置编译Vala示例程序:

https://wiki.gnome.org/Projects/Vala/OpenGLSamples

我在Arch Linux上。

我有两个错误:

Vala API can't be found
Package `GL` not found
Package `GLFW' not found

1 个答案:

答案 0 :(得分:2)

您链接到的示例有几个问题:

  1. 它是用旧的libglfw.vapi文件编写的。
  2. ListOfBindings页面上的所有gl.vapi链接都已死亡。
  3. 我试图重写glfw3.vapi的示例:

    using GL;
    
    int show_triangle () {
        // Open an OpenGL window (you can also try Mode.FULLSCREEN)
        var win = new GLFW.Window(640, 480, "My example window");
        if (win == null)
            return 1;
        // Making the context current is required before calling any gl* function
        win.make_context_current ();
        // Main loop, exit when the user closes the window (e.g. via ALT + F4 or close button)
        while (!win.should_close) {
            // OpenGL rendering goes here...
            glClear (GL_COLOR_BUFFER_BIT);
            glBegin (GL_TRIANGLES);
                glVertex3f ( 0.0f, 1.0f, 0.0f);
                glVertex3f (-1.0f,-1.0f, 0.0f);
                glVertex3f ( 1.0f,-1.0f, 0.0f);
            glEnd ();
    
            // Swap front and back rendering buffers
            win.swap_buffers ();
            // Poll events, otherwise should_close will always be false
            GLFW.poll_events ();
        }
        return 0;
    }
    
    int main () {
        // Initialize GLFW
        if (!GLFW.init ())
            return 1;
        int exit_code = show_triangle ();
        // Terminate GLFW
        GLFW.terminate ();
        // Exit program
        return exit_code;
    }
    

    您必须引用glfw3.vapi文件,该文件是vala-extra-vapis软件包的一部分:

    https://wiki.gnome.org/action/show/Projects/Vala/ListOfBindings

    https://git.gnome.org/browse/vala-extra-vapis/tree/glfw3.vapi

    问题2可以通过使用来自其他地方的gl.vapi来修复,例如:

    https://github.com/mikesmullin/Vala-Genie-OpenGL/blob/master/gl.vapi

    您还必须安装包含glfw3开发文件的发行包。 (例如Debian上的libglfw3-dev)

    如果将vapi文件和示例源代码放在工作目录中,则可以使用以下命令编译:

    valac --vapidir=. --pkg gl --pkg glfw3 test.vala
    

    编辑:我使用glfw快速入门教程中的一些信息改进了我的代码:

    http://www.glfw.org/docs/latest/quick.html