我是 GLFW 的新手,我尝试用 C 语言使用 GLFW 和 OpenGL 制作最基本的应用程序。我从 GLFW 文档中获取了示例代码:https://www.glfw.org/documentation.html。有效。然而,当我在程序顶部包含 GLAD 时,它会在
glClear(GL_COLOR_BUFFER_BIT);
和 Thread 1: EXC_BAD_ACCESS (code=1, address=0x0)
处崩溃。当代码未运行时,不会出现错误并且构建成功。我已经尝试过来自 https://gen.glad.sh/ 和 http://glad.dav1d.de/ 的 GLAD。两者的构建仅包含版本 4.6 的 GL、Core 而不是 Compatibility。
我现在使用的是 Macbook Pro 和 M1 Pro,MacOS Monterey 12.0.1。已安装 GLFW,
brew install
。
截图:
另外,我是 Xcode 新手,并且一直使用 CLion 进行编程,因此我在尝试设置所有这些时可能搞砸了一些东西。
然而,当我在程序顶部添加 GLAD 时,它会在
处崩溃glClear(GL_COLOR_BUFFER_BIT);
因为您现在正在地址
NULL
处调用函数。 happy 头文件的作用是对于每个 GL 函数名称(如 glClear
),它将定义一个 预处理器宏 到 happy 的内部函数指针:
typedef void (GLAD_API_PTR *PFNGLCLEARPROC)(GLbitfield mask);
GLAD_API_CALL PFNGLCLEARPROC glad_glClear;
#define glClear glad_glClear
您实际上需要调用
gladLoadGLLoader
在运行时加载所有这些函数指针,在您创建并设为当前要使用的 GL 上下文之后。
既然使用了GLFW,就可以直接使用
glfwGetProcAddress
作为_loader函数:
if (!gladLoadGLLoader((GLADloadproc) glfwGetProcAddress)) {
// error out
}
正如高兴的自述文件中所记录的那样。
我刚刚遇到了和你一样的问题,但是看了唯一的答案后,我仍然不知道如何解决这个问题?你能给我更多关于这个问题的细节吗?比如我是否需要在这个主文件中添加一些代码?或者我必须将这个“glClear()”函数名称更改为gladLoadGLLoader?我不知道。 如果您能回复我,我将不胜感激。