glew和glfw的opengl初始化问题

Posted

技术标签:

【中文标题】glew和glfw的opengl初始化问题【英文标题】:opengl initialization problem with glew and glfw 【发布时间】:2019-09-19 18:46:57 【问题描述】:

我开始学习 OpenGL 的东西,但不幸的是,我无法正确进行初始化。 我添加了 glfw 和 glew 库,这些函数给了我一个奇怪的错误, 我怎样才能让它工作?

代码:

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

int main(void)

GLFWwindow* window;

/* Initialize the library */
if (!glfwInit())

    std::cout << "GLFW initialization failed.\n";
    return -1;

if (glewInit()!=GLEW_OK)

    std::cout << "GLEW initialization failed.\n";
    return -1;

window = glfwCreateWindow(640, 480, "Hello World", NULL, NULL);

if (!window)

    glfwTerminate();
    std::cout << "Wiondow failed.\n";
    return -1;


/* Make the window's context current */
glfwMakeContextCurrent(window);
/* Loop until the user closes the window */
while (!glfwWindowShouldClose(window))

    /* Render here */
    glClear(GL_COLOR_BUFFER_BIT);

    /* Swap front and back buffers */
    glfwSwapBuffers(window);

    /* Poll for and process events */
    glfwPollEvents();



glfwTerminate();
return 0;

错误:

【问题讨论】:

您使用静态库还是动态库 (dll)?如果是静态库,您必须设置预处理器定义GLEW_STATIC 谢谢,你是最棒的 【参考方案1】:

要正确链接GLEW 库,必须设置正确的预处理器定义。见GLEW - Installation:

[...] 在 Windows 上,您还需要在构建静态库或可执行文件时定义 GLEW_STATIC 预处理器令牌,并在构建 dll 时定义 GLEW_BUILD 预处理器令牌 [...]

【讨论】:

以上是关于glew和glfw的opengl初始化问题的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 GLFW3 初始化 GLew

OpenGL开发环境配置:VS2015+glew+glfw

如何将 GLEW 和 GLFW 以及 OpenGL 链接到 MingW 的 g++

使用 GLFW/GLEW 进行 OpenGL 编程

OpenGL配置GLFW与GLEW的问题

现代opengl渲染管道