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