我试图在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项目设置和
sfml
包含文件夹sfml
lib sfml_static
如何设置glew
? (glew
包含在SFML中,所以我只是用
#define GLEW_STATIC
#include <GL/glew.h>
我的代码应该可行,但它没有。
答案 0 :(得分:0)
您需要静态链接GLEW库。
命令行:
g++ appname -lGLEW -lsfml-system -lsfml-window -lsfml-graphics
码块:
右键单击您的项目 - > gt;构建选项 - &gt;添加 - >输入GLEW库的路径 - >确定