我努力寻找有关使用 Cygwin-g++ 编译基本 OpenGL/GLFW 示例 Windows 的文档,因此我决定发布我自己问题的答案。 操作系统:Windows (10) 编译器:Cygwin g++ (x86_64-pc-cygwin) 代码: GLFW 文档的示例代码(基本工作 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在尝试使用高兴的 glfw 创建一些便携式 C++ opengl 代码。 程序中使用了 Sockets,msys2 不兼容 posix。 所以我正在尝试对我们没有用的cygwin。
cygwin 没有 glfw 二进制文件,但指令要求从源代码为 linux 构建 glfw,并且声称它应该可以工作。
我创建了一个 MWE:
#include <glad/glad.h>
//#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
#include <iostream>
#include <cstdlib>
using namespace std;
static void key_callback(GLFWwindow* win,
int key, int scancode,
int action, int mods) {
if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS)
glfwSetWindowShouldClose(win, GL_TRUE);
}
constexpr int w = 1024, h = 768;
int main() {
// glfwSetErrorCallback(error_callback);
if (!glfwInit())
exit(EXIT_FAILURE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
GLFWwindow* win = glfwCreateWindow(w, h, "Simple example", NULL, NULL);
if (win == nullptr) {
glfwTerminate();
exit(EXIT_FAILURE);
}
glfwSetKeyCallback(win, key_callback);
glfwMakeContextCurrent(win);
if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) {
cerr << "Failed to initialize GLAD\n";
exit(EXIT_FAILURE);
}
while (!glfwWindowShouldClose(win)) {
glViewport(0, 0, w, h);
glClear(GL_COLOR_BUFFER_BIT);
glfwSwapBuffers(win);
glfwPollEvents();
}
glfwDestroyWindow(win);
glfwTerminate();
exit(EXIT_SUCCESS);
}
高兴的文件适用于 msys2。 上面的代码适用于 linux (Ubuntu 20)。
从源代码构建glfw3后,我在cygwin下编译它
g++ -g glfwtest.cc glad.c -o glfwtest -L/usr/local/lib -lglfw3 -lX11
程序在运行时冻结。 没有 window 打开。 我试图在 cygwin 中运行 gdb ,这也冻结了。
这是 windows 10 家庭系统,工作正常。 Cygwin 昨天刚刚安装了 gcc 10.xx 和 gdb。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.