当前位置: 首页 > 知识库问答 >
问题:

使用GLFW3创建OpenGL 4.3窗口失败

隆功
2023-03-14

我设置了一个最小应用程序,用GLFW3打开一个空白窗口:

#include <iostream>
#include <GL/glew.h>
#include <GLFW/glfw3.h>

void glfwErrorCallback(int error, const char *description)
{
   std::cerr << "GLFW error " << error << ": " << description << std::endl;
}

int main(int argc, char **argv)
{
   GLFWwindow* window;
   glfwSetErrorCallback(glfwErrorCallback);

   if(!glfwInit())
   {
      std::cerr << "Failed to initialize GLFW...\n";
      return -1;
   }

   glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
   glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
   glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

   window = glfwCreateWindow(1024, 768, "GLFW window", NULL, NULL);
   if(!window)
   {
      std::cerr << "Failed to open GLFW window...\n";
      glfwTerminate();
      return -1;
   }

   glewExperimental = GL_TRUE;
   if (glewInit())
   {
      std::cerr << "Failed to initialize GLEW...\n";
      glfwTerminate();
      return -1;
   }

   glfwMakeContextCurrent(window);

   while (glfwGetKey(window, GLFW_KEY_ESCAPE) != GLFW_PRESS && !glfwWindowShouldClose(window))
   {
      glfwSwapBuffers(window);
      glfwPollEvents();
   }

   glfwTerminate();
   return 0;
}

它会导致以下错误:

GLFW错误65540:上下文配置文件仅存在于OpenGL 3.2及更高版本
未能打开GLFW窗口...

该应用程序使用Bumblebee的optirun在Linux上运行。当使用freeglut而不是GLFW时,代码可以工作。导致错误的代码有什么问题?

共有1个答案

慕河
2023-03-14
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4); // Major = 4
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // Major was 4, now it is 3.

// Minor = ???   [Something < 2]

您需要使用glfwWindowHint(GLFW\u CONTEXT\u VERSION\u MINOR,3) 而不是第二个提示。

 类似资料:
  • 我正在尝试使用GLFW3创建一个窗口。当我在我的桌面上做这件事时,效果很好。在我的笔记本电脑上,它无法创建窗口,程序崩溃。删除glfwWindowHint()调用可以防止崩溃,但我的代码无法工作,因为我使用了错误的openGL版本。以下是窗口代码: 这可能与我的台式机有NVidia图形,而我的笔记本电脑有集成图形有关吗? 更新:它在调用glfwSwapBuffers()时崩溃,我将glfw错误65

  • 本文向大家介绍使用OpenGL创建窗口 C ++,包括了使用OpenGL创建窗口 C ++的使用技巧和注意事项,需要的朋友参考一下 在OpenGL上制作任何程序的基本步骤是创建一个窗口,所有代码都将在其中工作,因此我们如何创建它?在您的机器上安装OpenGL库之后(Ubuntu的OpenGL安装指南:如何在Ubuntu中安装OpenGL),我们可以开始了。 首先让我们了解如何构建OpenGL程序吗

  • 译注 注意,由于作者对教程做出了更新,之前本节使用的是GLEW库,但现在改为了使用GLAD库,关于GLEW配置的部分现在已经被修改,但我仍决定将这部分教程保留起来,放到一个历史存档中,如果有需要的话可以到这里来查看。 在我们画出出色的效果之前,首先要做的就是创建一个OpenGL上下文(Context)和一个用于显示的窗口。然而,这些操作在每个系统上都是不一样的,OpenGL有目的地从这些操作抽象(

  • 我正在通过glfw3库学习OpenGL,我正在使用imgui制作一个有趣的应用程序。 我想做一个小引擎或CAD工具。 问题是我不能在imgui窗口中呈现我想要的。 我搜索了谷歌,找到了以下链接: https://gamedev.stackexchange.com/questions/150214/render-in-a-imgui-window https://gamedev.stackexcha

  • 通过对第 5 章的学习,我们已经了解了 Qt Designer 及其组件的基本用法。Qt Designer 提供了许多预定义模板,使用它可以创建多种不同的用户界面。使用 Qt Designer 创建主窗口是非常快捷的,使用其中的 【templates\forms】→【Main Window】就可以完成主窗口类型应用程序界面的设计,主要包括菜单栏、工具栏以及锚接窗口部件的 设定,这其中锚接窗口部件不

  • pre { white-space: pre-wrap; } 创建一个窗口(window)非常简单,我们创建一个 DIV 标记: <div id="win" title="My Window">     Some Content. </div> 现在运行测试页面,您会看见一个窗口(window)显示在您的屏幕上。我们不需要写任何的 javascript 代码。 如果您希望创建一个隐藏的窗口(w