编辑:如果任何人有这样那样的错误,并且正在使用GLEW,使用OpenGL 4.5的功能的时候,下面会有所帮助:glClearBufferfv - 未在此范围内声明?
glewExperimental = GL_TRUE;
后,只是初始化GLEW,你会没事的。
我刚刚开始与OpenGL。目前我正尝试用红色清除整个屏幕,如此代码所示:
#include "GLFW/glfw3.h"
#define WIDTH 1280
#define HEIGHT 720
int main(void)
{
GLFWwindow *window;
if(!glfwInit()) {
return -1;
}
window = glfwCreateWindow(WIDTH, HEIGHT, "Test OpenGL", NULL, NULL);
if(!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
static GLfloat red[] = {1.0f, 0.0f, 0.0f, 1.0f};
glClearBufferfv(GL_COLOR, 0, red);
while(!glfwWindowShouldClose(window)) {
//glEnableClientState(GL_VERTEX_ARRAY);
//glDisableClientState(GL_VERTEX_ARRAY);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
但是有一个问题。我使用g ++来编译在Code :: Blocks中编写的代码。此外,我正在学习OpenGL SuperBible第7版,在那里我得到了用红色清除屏幕的代码。在我使用之前glClearColor(255,0,0,0)然后glClear(GL_COLOR_BUFFER_BIT); 但在这本书中的屏幕与glClearBufferfv,会抛出以下异常清除:
错误:“glClearBufferfv”在此范围
当然,我想使用的代码未声明为了学习的目的,所以这将是伟大的,如果这将工作。可悲的是,它并没有。任何想法,为什么?
好吧,所以我开始使用GLEW,这似乎是我的目的最好的,但现在我得到以下错误:未定义的引用_imp______glewClearBufferfv我也往往宁愿不使用sb7.h,因为我不'计划在未来使用它。 – AProgrammer
这听起来像一个链接问题。您是否阅读过GLEW的[安装说明](http://glew.sourceforge.net/install.html)? –
那么,我在此期间尝试了其他的东西。我在包含glew.h之前定义了GLEW_STATIC,并且链接到了glew32s.lib,而不是glew32.lib,但它对我没有任何作用。所以我想,我会使用gl3w然后,正如你所建议的(为什么我甚至不使用它?:D)有一件事,我想问:链接器的加载顺序是否正确?:glfw3,opengl32, gdi32,include \ Win32 \ glew32s.lib – AProgrammer