首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLFW3 3/GLAD故障分割

GLFW3 3/GLAD故障分割
EN

Stack Overflow用户
提问于 2022-05-29 03:19:48
回答 1查看 178关注 0票数 0

在使用GLFW3创建窗口时,我有一个非常奇怪的分段错误。

Linux内核:5.4.0-113-generic

NVIDIA驱动程序:510.73.05

OpenGL (来自glxinfo):OpenGL核心配置文件版本字符串: 4.5 (核心配置文件)Mesa21.2.6

高兴:C/C++ OpenGL 4.5核心(无扩展)

GLFW:3.3.7

我正在使用这个漂亮的命令来编译:

gcc src/*.c -Wall -Ideps/glad/include -Ideps/glfw/include -Ldeps/glad/lib -Ldeps/glfw/lib -lglad -lglfw3 -lGL -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lm -o bin/balldrop

我所做的就是使用cmake -S . -B. && make构建cmake -S . -B. && make,并隔离libglfw3.a和include目录,以便只剩下剩下的部分,并将glad.c文件编译成libglad.a,使其也可以静态绑定。没有错误或警告。

希望这是足够的背景。总之,我只是简单地运行以下代码:

代码语言:javascript
复制
#include <stdio.h>
#include <stdlib.h>
#include <glad/glad.h>
#define GLFW_INCLUDE_NONE
#include <GLFW/glfw3.h>
int main() {
    GLFWwindow* window;
    if(!glfwInit()) return -1;
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
    glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
    window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);
    if(!window) {
        glfwTerminate();
        return -1;
    }
    glfwMakeContextCurrent(window);
    while(!glfwWindowShouldClose(window)) {
        glClear(GL_COLOR_BUFFER_BIT);
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
    glfwDestroyWindow(window);
    glfwTerminate();
    return 0;
}

我在编译的时候得到了一个即时的片段错误。运行gdb时,我看到分段错误只是请求一些地址0x0000000000000000 @ ??,同时也引用了主地址。老实说我不太确定这会是什么。我的驱动程序是最新的,我的内核是最新的,驱动程序支持OpenGL 4.5,并且我添加了所有的命令行标志来进行编译。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-29 03:26:07

在初始化高兴之前使用OpenGL调用(glClear)。你必须在那之前做gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)。在GLFW入门指南中提到了这一点。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72420680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档