c - 初始化后的 glfw 段错误

标签 c opengl graphics glfw glew

我构建了 glfw,测试中的程序运行得很好,但是,当我尝试编写自己的程序时,它在 while(!glfwWindowShouldClose(window)) 行出现段错误,当我删除这是它在 glfwPollEvents() 上的段错误。我正在使用 cc window.c -lglfw3 -lGLEW -lGL -lX11 -lGLU -lXxf86vm -lXrandr -lpthread -lXi -lm -lXinerama -lXcursor 编译它。为什么这些函数会出现段错误,而初始化函数为什么不会。完整的程序包括在下面。

#include <GL/glew.h>
#include <GLFW/glfw3.h>

int main(int argc, char** argv){
    glfwInit();

    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
    GLFWwindow* window = glfwCreateWindow(800, 600, "gl", NULL, NULL);
    glfwMakeContextCurrent(window);

    //glewExperimental = GL_TRUE;
    glewInit();

    glViewport(0, 0, 800, 600);
    while(!glfwWindowShouldClose(window)){
        glfwPollEvents();
        glClearColor(0.2f, 0.3f, 0.3f, 1.0f);
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
    }
    glfwTerminate();
        return 0;
}

最佳答案

只需将这一行添加到您的初始化中:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);

然后它就会起作用! ;-)

您可能使用的是 Mac,对吧?解释就在这里: http://www.glfw.org/faq.html#how-do-i-create-an-opengl-30-context

关于c - 初始化后的 glfw 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27409627/

相关文章:

c++ - Linux VMware 11 guest 台面驱动程序安装以更新 OpenGL

c++ - GLFW三角形不会变色

c - 是什么导致了堆栈溢出?我该如何解决它?

r - 如何编辑由 mfrow 拆分的 R 图形设备中的先前绘图

c - 为什么处理字节(例如 'recv' )的 Windows API 调用使用默认签名的 char*?

c - 如何在计算着色器中修改顶点的特定属性

C++ OpenGL 如何从四元数获取旋转 x,y,z

java - 如何将一幅图像的一部分复制到另一幅图像?

c - 如何在数组中存储数组元素

c# - C# 应用程序是否可以与内核驱动程序通信?