2017-06-14 44 views
0

我編譯並鏈接了一個簡單的OpenGL程序。它是一個C++控制檯程序,它打印版本號。它有效,但我不明白它爲什麼起作用。請你能幫我理解它。爲什麼我需要FreeGLUT來編譯和鏈接一個GLFW程序

我已經在GLFW和FreeGLUT庫中鏈接了。我認爲這些是替代工具包。但是,如果我取出FreeGLUT庫,則glGetString不再鏈接。

他們是替代工具包嗎?爲什麼我需要鏈接FreeGLUT?我錯過了一個我應該鏈接的庫嗎?

// GLVersion.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include "glfw3.h" 
#include "glfw3native.h" 
#include "freeglut.h" 
#include "glut.h" 


int main(int argc, char**argv) 
{ 
    const GLubyte *Vstr; 
    glfwInit(); 
    GLFWwindow* mywindow = glfwCreateWindow(800,600,"GLFW",NULL,NULL); 
    glfwMakeContextCurrent(mywindow); 

    Vstr = glGetString(GL_VERSION); 
    fprintf(stderr, "Your OpenGL version is %s\n", Vstr); 

    getchar(); 

    return 0; 
} 

回答

1

glGetString是一個OpenGL函數,而不是GLU函數。要鏈接它,您必須鏈接OpenGL32.lib

+0

謝謝。我現在在Visual Studio 2015中有以下鏈接器數據:glfw3.lib; glfw3dll.lib; opengl32.lib;%(AdditionalDependencies)。上面的例子編譯和鏈接OK(我也需要引入FreeGLUT)? –

+0

如果我添加新的代碼行,例如glClearColor,那也可以。如果我添加glShaderSource,它會編譯但不會鏈接該函數或其他類似的函數。我使用了相同的鏈接庫。我錯過了一個圖書館嗎? –

+0

@FrancisKing你需要爲大多數函數使用OpenGL函數加載器。有許多裝載機可供選擇,如glew,glxw,gl3w或glLoadGen。 – SurvivalMachine

相關問題