gpt4 book ai didi

opengl - Hello World OpenGL 程序 : "glEnableVertexAttribArray was not declared it this scope"

转载 作者:行者123 更新时间:2023-12-05 01:16:28 25 4
gpt4 key购买 nike

越来越郁闷了。我一直在尝试让一个简单的 hello world 类型的程序运行,但它就是没有发生。

我使用的是 Windows 7,我的显卡支持较新的 OpenGL。用 freeglut 用 C 语言编写,我用 MinGW 和 Code::Blocks 编译。在链接器中,我有 freeglut、opengl32 和 glu32。我将 freeglut 内容保存在位于我的 MinGW 文件夹中的 freeglut 文件夹中,因此在我的build设置的搜索目录下,我有编译器的“C:\MinGW\freeglut\include”和“C:\MinGW\freeglut\lib” "链接器。

这是我的代码:

#include <stdlib.h>
#include <GL/glut.h>

void NIAppIdle(void);
void NIAppDisplay(void);

int main(int argc, char *argv[])
{
// Setup windwing
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutInitWindowSize(800, 600);
glutCreateWindow("HELLO WORLD");

// Define GLUT callbacks
glutIdleFunc(NIAppIdle);
glutDisplayFunc(NIAppDisplay);

// Enter render loop
glutMainLoop();
return 0;
}

void NIAppIdle(void)
{
glutPostRedisplay();
}

void NIAppDisplay(void)
{
glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);

float geometry[] =
{
-0.5f, 0.5f, 0.0f, 1.0f,
0.5f, -5.0f, 0.0f, 1.0f,
0.0f, 0.5f, 0.0f, 1.0f
};
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 4, GL_FLOAT, 0, 0, geometry);
glDrawArrays(GL_TRIANGLES, 0, 3);
glutSwapBuffers();
}

问题出在“glEnableVertexAttribArray”和“glVertexAttribPointer”函数上。编译器说它们“没有声明在这个范围内”。

程序可以在没有这些行的情况下运行,所以我想 OpenGL 已正确链接,但由于某些原因我无法使用这些函数,而且我知道它们是 OpenGL 的一部分。这与我拥有的 OpenGL 版本有关吗?

无论如何,这是我第一次学习 OpenGL,我可能做错了什么,所以我请求有人帮助我。如果这篇文章看起来有点蹩脚,我很抱歉,这也是我第一次在这个网站上发帖。另外,我为我的语法感到抱歉,英语不是我的第一语言。

最佳答案

我认为您只能通过手动加载函数指针来访问 glEnableVertexAttribArray。如果你只想创建一个简单的 hello world 程序,我建议你使用 GLEW为您处理。

关于opengl - Hello World OpenGL 程序 : "glEnableVertexAttribArray was not declared it this scope",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com