Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ GLEW未初始化;抛出;缺少OpenGL版本“;_C++_Linux_Opengl_Sdl_Glew - Fatal编程技术网

C++ GLEW未初始化;抛出;缺少OpenGL版本“;

C++ GLEW未初始化;抛出;缺少OpenGL版本“;,c++,linux,opengl,sdl,glew,C++,Linux,Opengl,Sdl,Glew,我试图在SDL_窗口上初始化OpenGL上下文 问题是,当我尝试执行glewInit()时,它无法初始化,并给出错误消息“缺少OpenGL版本” 我在Google上翻了翻,似乎这个错误要么在OpenGL上下文未初始化时出现,要么更具体地说,对于SDL,当上下文未通过SDL\u GL\u MakeCurrent设置为当前时出现 值得一提的是,这里使用的SDL/OpenGL对象(gi_窗口、gi_glcontext)是GameInstance类中的公共变量 我的OpenGL版本是3.0,SDL版本是

我试图在SDL_窗口上初始化OpenGL上下文

问题是,当我尝试执行
glewInit()
时,它无法初始化,并给出错误消息“缺少OpenGL版本”

我在Google上翻了翻,似乎这个错误要么在OpenGL上下文未初始化时出现,要么更具体地说,对于SDL,当上下文未通过
SDL\u GL\u MakeCurrent
设置为当前时出现

值得一提的是,这里使用的SDL/OpenGL对象(gi_窗口、gi_glcontext)是
GameInstance
类中的公共变量

我的OpenGL版本是3.0,SDL版本是2.0.3,GLEW版本是1.10-2

正在使用的系统是64位Arch Linux(因此安装了上述库的64位版本)

初始化代码 我是个白痴

if(glewerror =! GLEW_OK)
{
   std::cerr << "GLEW Error(something about the initilazation): " <<
   glewGetErrorString(glewerror) << std::endl;
}
if(glewerror=!GLEW_OK)
{

性病::cerr囊性纤维化只需要组成我们DNA的序列中约2或3个字母不同——这通常是致命的。然而,我们可以拥有数百或数千个不同于其他人的基因,而不会产生不良影响。关键是——有些东西是至关重要的,而另一些则不是。将代码缩减到最小功能ning程序并从那里开始。感谢您的响应,但我已经从头重写了此代码;甚至删除了错误处理(当然从
glewInit()
中除外),但问题仍然存在。在编辑3中,您的
SDL_Init()在哪里
go?这有点重要。你所有的代码都很混乱。你的新代码缺少
SDL_Init()
call。但它试图在创建上下文后设置GL上下文版本,这将无效。您的原始区域代码使用了正确的顺序。这可能是它失败的原因。可能是您没有GL3支持。您链接的示例的顺序也不正确,因此您可能会在那里获得旧上下文。@derhass,@genpfault啊,是的,我有一个头脑放屁,不包括SDL_Init。我应该有GL3支持,至少在
glGetString(GL_版本)
告诉我的范围内(它输出
3.0 Mesa 10.2.2
)。你并不孤单!!谢谢你发布这篇文章。哇……我花了一段时间才看到“!=”和“=!”的区别
#include <SDL2/SDL.h>
#include <SDL2/SDL_version.h>
#include <GL/glew.h>
#include <iostream>
int main()
{
  SDL_Init(SDL_INIT_EVERYTHING);

  SDL_Window* gi_window = SDL_CreateWindow("I would love for this to work!",
                               SDL_WINDOWPOS_UNDEFINED,
                               SDL_WINDOWPOS_UNDEFINED, 640, 480,
                               SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
  SDL_GLContext gi_glcontext = SDL_GL_CreateContext(gi_window);
  SDL_GL_MakeCurrent(gi_window, gi_glcontext);

  SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION , 3 );
  SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION , 0 );
  glewExperimental = GL_TRUE;
  GLenum glewerror = glewInit();
  if(glewerror =! GLEW_OK)
  {
    std::cerr << "GLEW Error(something about the initilazation): " << glewGetErrorString(glewerror) << std::endl;
  }

}
if(glewerror =! GLEW_OK)
{
   std::cerr << "GLEW Error(something about the initilazation): " <<
   glewGetErrorString(glewerror) << std::endl;
}
if(glewerror != GLEW_OK)
 {
   std::cerr << "GLEW Error(something about the initilazation): " <
   glewGetErrorString(glewerror) << std::endl;
 }