在sfml和opengl程序中的glew设置不起作用

时间:2015-10-24 10:31:57

标签: c++ opengl codeblocks sfml glew

我试图在OpenGL中使用SFML,我的设置运行正常。然后我看到要使用现代OpenGL函数,我还需要包含glew。我整天都试着设置这个东西而且它不起作用。

这就是我的所作所为:

#define GLEW_STATIC
#include <GL/glew.h>
#include <SFML/OpenGL.hpp>
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>

using namespace std;

sf::RenderWindow window(sf::VideoMode(1280, 760), "SFML works!");
sf::Event Event;
sf::Shader defaultShader;

GLfloat vertices[] = {
    -0.5f, -0.5f, 0.0f,
     0.5f, -0.5f, 0.0f,
     0.0f,  0.5f, 0.0f
};

GLuint VBO, VAO;
int main()
{
    glewInit();
    glGenVertexArrays(1, &VAO);
    glGenBuffers(1, &VBO);
    glBindVertexArray(VAO);
    glBindBuffer(GL_ARRAY_BUFFER, VBO);
    glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    return 0;
}

我得到了这些错误:

undefined reference to '__glewGenVertexArrays'
undefined reference to '__glewGenBuffers'
undefined reference to '__glewBindVertexArray'
除了glewInit()之外我用过的所有函数的

等等。

我使用的是SFML 2.3。我去了Code :: Blocks项目设置和

  1. 关联了sfml包含文件夹
  2. 链接了sfml lib
  3. 声明sfml_static
  4. 如何设置glew? (glew包含在SFML中,所以我只是用

    #define GLEW_STATIC
    #include <GL/glew.h>
    

    我的代码应该可行,但它没有。

1 个答案:

答案 0 :(得分:0)

您需要静态链接GLEW库

命令行:

g++ appname -lGLEW -lsfml-system -lsfml-window -lsfml-graphics

码块:

  

右键单击您的项目 - > gt;构建选项 - &gt;添加 - >输入GLEW库的路径 - >确定