【问题标题】:glfwGetGLVersion() returns 2.1 on OS X LionglfwGetGLVersion() 在 OS X Lion 上返回 2.1
【发布时间】:2013-05-25 11:16:47
【问题描述】:

我正在尝试在 Lion 上设置 OpenGL 3.2 上下文。我有这个代码来设置窗口:

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

if (!glfwInit())
    return -1;

if (!glfwOpenWindow(640, 480, 8, 8, 8, 0, 0, 0, GLFW_WINDOW))
    return -1;

glClearColor(1.0f, 0.0f, 0.0f, 1.0f);

// Get OpenGL details
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
std::cout << "GL Version: " << major << "." << minor << "." << rev << std::endl;

GL 版本发布为 2.1,尽管我运行的是 OS X Lion 和显然支持 3.2 的 AMD Radeon 6750M。另外,我运行了这段 C 代码here,它返回了 3.2。我正在使用 GLFW 2.7.8。有谁知道这里发生了什么?

【问题讨论】:

  • GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE 请停止这样做。
  • 您运行它的 PC 是否具有集成 GPU 和专用 GPU?如果是这样,您可能需要明确告诉 AMD 驱动程序使用您的主卡。
  • @NicolBolas 为什么他不应该将 GLFW_OPENGL_FORWARD_COMPAT 设置为 GL_TRUE?
  • @FullFrontalNudity - 是的,还有英特尔 HD3000。我如何告诉它使用 6750M?

标签: c++ macos opengl osx-lion glfw


【解决方案1】:

事实证明,在调用 glfwOpenWindowHint 之前,我需要先调用 glfwInit()

if (!glfwInit())
    return -1;

glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

if (!glfwOpenWindow(500, 500, 8, 8, 8, 0, 0, 0, GLFW_WINDOW))
    return -1;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 2012-04-24
    相关资源
    最近更新 更多