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;
}
謝謝。我現在在Visual Studio 2015中有以下鏈接器數據:glfw3.lib; glfw3dll.lib; opengl32.lib;%(AdditionalDependencies)。上面的例子編譯和鏈接OK(我也需要引入FreeGLUT)? –
如果我添加新的代碼行,例如glClearColor,那也可以。如果我添加glShaderSource,它會編譯但不會鏈接該函數或其他類似的函數。我使用了相同的鏈接庫。我錯過了一個圖書館嗎? –
@FrancisKing你需要爲大多數函數使用OpenGL函數加載器。有許多裝載機可供選擇,如glew,glxw,gl3w或glLoadGen。 – SurvivalMachine