2013-01-10 30 views
1

我想使用OpenGL版本3/4,但沒有找到任何有關使用哪些庫或頭文件的參考。如何在我的新項目中使用OpenGL 3/4

我看着offical OpenGL homepage,但在那裏我找不到任何庫。 我在哪裏必須下載新版本的OpenGL?

+1

這是相同的庫和頭文件,你就必須以不同的方式創建上下文。 – Pubby

+0

「*我看OpenGL官方主頁,*」你看起來不太難。它就在[Wiki的入門頁面](http://www.opengl.org/wiki/Getting_Started)。 –

回答

0

正如Pubby在他的評論中所說,你仍然使用OpenGL庫。但是,您應該使用可在http://www.opengl.org/registry/處找到的庫標頭,並且您將不得不創建不同的上下文。例如,與GLFW,我做這樣的事情:

GLenum init_window(int w, int h) 
{ 
     int major, minor, rev; 
     GLenum glewResult; 

     if (glfwInit() != GL_TRUE) { 
       fprintf(stderr, "error: could not init GLFW\n"); 
       return GL_FALSE; 
     } 
     glfwGetVersion(&major, &minor, &rev); 
     printf("GLFW %d.%d.%d\n", major, minor, rev); 

     glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 4); 
     glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 3); 
     glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 
     glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); 
     if (!glfwOpenWindow(w, h, 0,0,0,0, 24,0, GLFW_WINDOW)) { 
       fprintf(stderr, "Could not open window\n"); 
       glfwTerminate(); 
       return GL_FALSE; 
     } 

     glfwGetGLVersion(&major, &minor, &rev); 
     fprintf(stderr, "Context: OpenGL %d.%d.%d\n", major, minor, rev); 

     glewExperimental = GL_TRUE; 
     glewResult = glewInit(); 
     if (glewResult != GLEW_OK) { 
       fprintf(stderr, "error: could not init GLEW\n"); 
       fprintf(stderr, "error: %s\n", glewGetErrorString(glewResult)); 
       glfwTerminate(); 
       return GL_FALSE; 
     } 
     return GL_TRUE; 
} 

我希望幫助!

+0

所以我必須使用GLFW? – SKiD

+0

不,你如何創建上下文取決於你使用的庫。 GLFW是一個窗口和輸入庫,爲您提供1個窗口併爲其添加上下文。我的代碼片段僅僅是我如何使用GLFW做的一個例子。 –

0

OpenGL是由GPU供應商實施的庫。如果你有一個體面的GPU,那麼你可能有OpenGL 3或4. 在默認情況下,Windows只有OpenGL 1.1,但供應商使用擴展實現「完整」OpenGL。一般來說,您應該使用一些幫助程序庫來獲取這些擴展名(或編寫自己的代碼:))

如果您想使用「現代」OpenGL。至少嘗試使用OpenGL 3.3的核心功能。

偉大的信息來源:http://www.opengl.org/wiki/Main_Page

書:http://www.starstonesoftware.com/OpenGL/

相關問題