編輯:如果任何人有這樣那樣的錯誤,並且正在使用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