vala 无法编译简单示例 glfw gl not found
vala can't compile simple example glfw gl not found
编辑:这不是 header 链接或包丢失的问题
我正在尝试编译来自以下来源的 Vala 示例程序:
https://wiki.gnome.org/Projects/Vala/OpenGLSamples。
我在 Arch Linux.
我有两个错误:
Vala API can't be found
Package `GL` not found
Package `GLFW' not found
您链接到的示例存在几个问题:
- 它是用旧 libglfw.vapi 文件编写的。
- ListOfBindings 页面上的所有 gl.vapi 链接都已失效。
我已经尝试重写 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;
}
您必须引用作为 vala-extra-vapis 包一部分的 glfw3.vapi
文件:
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 快速入门教程中的一些信息改进了我的代码:
编辑:这不是 header 链接或包丢失的问题
我正在尝试编译来自以下来源的 Vala 示例程序:
https://wiki.gnome.org/Projects/Vala/OpenGLSamples。
我在 Arch Linux.
我有两个错误:
Vala API can't be found
Package `GL` not found
Package `GLFW' not found
您链接到的示例存在几个问题:
- 它是用旧 libglfw.vapi 文件编写的。
- ListOfBindings 页面上的所有 gl.vapi 链接都已失效。
我已经尝试重写 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;
}
您必须引用作为 vala-extra-vapis 包一部分的 glfw3.vapi
文件:
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 快速入门教程中的一些信息改进了我的代码: