1

在我的新项目中,我想使用 OpenGL 版本 3/4,但我没有找到任何关于我必须使用哪些库或头文件的参考资料。

我查看了官方的 OpenGL 主页,但在那里我找不到任何库。我必须在哪里下载新版本的 OpenGL?

4

2 回答 2

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;
}

我希望这会有所帮助!

于 2013-01-10T01:16:03.483 回答
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/

于 2013-01-10T18:21:27.060 回答