我正在尝试让我的第一个项目在fedora 36下运行OpenGL。为此,我使用了库“freeglut. h”和“glew. h”。然而,有许多函数,如:
- glBindBuffer(绑定缓冲区)
- glGen缓冲区
- glEnableVertexAttribArray可启用顶点属性数组
- glVertex属性指针
- glDisable顶点属性数组
- glBufferData缓冲区数据
Visual Studio代码向我显示的错误是这些函数未定义。
其他的事情,比如
- 格伦特
- glClear清除
- glDraw数组
- glSwap缓冲区
看起来还不错
我尝试使用以下命令编译项目:
gcc firstProject.cpp -o firstProject -lGLEW -lGL -lGLU -lglut
但是我得到了多个错误,例如glBindBuffer没有在这个作用域中声明。
下面是我的第一个项目.cpp的片段:
# include <GL/freeglut.h>
#include <GL/glew.h>
#include <stdio.h>
GLuint VBO;
static void renderScene() {
glClear(GL_COLOR_BUFFER_BIT);
glBindBuffer(GL_ARRAY_BUFFER, VBO);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
glDrawArrays(GL_POINTS, 0, 1);
glDisableVertexAttribArray(0);
glutSwapBuffers();
}
int main(int argc, char**argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(1920, 1080);
glutInitWindowPosition(200, 200);
int windowID = glutCreateWindow("MyFirstWindow");
GLenum error = glewInit();
if (error != GLEW_OK) {
fprintf(stderr, "Error:'s'\n", glewGetErrorString(error));
return 1;
}
GLclampf Red = 0.0f, Green = 0.0f, Blue = 0.0f, Alpha = 0.0f;
glClearColor(Red, Green, Blue, Alpha);
glutDisplayFunc(renderScene);
glutMainLoop();
return 0;
}
我还测试了'glewinfo'是否能为我的平台找到一个相应的入口点。例如,这里有glBindBuffer的输出:
$ glewinfo | grep glBindBuffer
glBindBuffer: OK
glBindBuffersBase: OK
glBindBuffersRange: OK
glBindBufferBase: OK
glBindBufferRange: OK
glBindBufferARB: OK
glBindBufferBaseEXT: OK
glBindBufferOffsetEXT: OK
glBindBufferRangeEXT: OK
在这里,您可以看到,如果我对glew的理解正确的话,glBindBuffer不应该是未定义的。
1条答案
按热度按时间vawmfj5a1#
我已经找到了一个解决我的问题的方法在glew网站:
http://glew.sourceforge.net/install.html
所以我交换了前两个包括和一切工作。
但是,我无法继续使用Visual Studio代码自动格式化程序功能,因为它每次都按字母顺序对包含的进行排序。