GLEW 未初始化;吐出"Missing OpenGL Version"
GLEW not initialising; Throws up "Missing OpenGL Version"
我正在尝试在SDL_Window上初始化OpenGL上下文。
问题是,当我尝试执行glewInit()
时,它无法初始化并给出错误信息"Missing OpenGL version."
我在谷歌上闲逛了一下,似乎这个错误要么出现在OpenGL上下文没有初始化的时候,或者更具体地说,对于SDL,当上下文不是由SDL_GL_MakeCurrent
当前的时候。
值得一提的是,这里使用的SDL/OpenGL对象(gi_window, gi_glcontext)是GameInstance
类中的公共变量。
我的OpenGL版本是3.0,我的SDL版本是2.0.3,我的GLEW版本是1.10-2。
使用的系统是64位Arch Linux(因此安装了上述库的64位版本)。
初始化代码
#include "../headers/init.h"
GameInstance::GameInstance(int p_fps, int p_height, int p_width, const char* p_wtitle)
{
gi_fps = p_fps;
if(SDL_Init(SDL_INIT_EVERYTHING) < 0)
{
std::cerr << "SDL Error(something about the init):" << SDL_GetError() << std::endl;
}
gi_window = SDL_CreateWindow(p_wtitle,
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED, p_width, p_height,
SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
if(gi_window == NULL)
{
std::cerr << "SDL Error(couldn't create window): " << SDL_GetError() << std::endl;
}
SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MAJOR_VERSION , 3 ) ;
SDL_GL_SetAttribute ( SDL_GL_CONTEXT_MINOR_VERSION , 0 ) ;
gi_glcontext = SDL_GL_CreateContext(gi_window);
if(gi_glcontext == NULL)
{
std::cerr << "SDL Error(something about glcontext): " << SDL_GetError() << std::endl;
}
std::cout << glGetString(GL_VERSION) << std::endl;
if(SDL_GL_MakeCurrent(gi_window, gi_glcontext) < 0)
{
std::cerr << "SDL Error(something about glcontext): " << SDL_GetError() << std::endl;
}
glewExperimental = GL_TRUE;
GLenum glewerror = glewInit();
if(glewerror =! GLEW_OK)
{
std::cerr << "GLEW Error(something about the initilazation): " << glewGetErrorString(glewerror) << std::endl;
}
SDL_version compiled;
SDL_GetVersion(&compiled);
printf("SDL Version: %d.%d.%dn",compiled.major, compiled.minor, compiled.patch); //
SDL_Delay(200000);
}
编辑:似乎Missing OpenGL Version
也出现的另一个原因,当glewExperimental没有设置,因为只有glewExperimental版本支持3.0+
我已经正确设置了glewExperimental(至少从我从网上的例子中收集到的),但它仍然给我Missing OpenGL Version
。
编辑2:
这里的代码没有抛出Missing OpenGL version
,尽管它与我的非常相似。
编辑3:
根据enhzflep的建议,我重写了代码,试图诊断出发生了什么。
错误没有缓解。
#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;
}
向所有试图帮助我的人干杯!
相关文章:
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 为什么 -mmacosx-version-min=10.10 不阻止使用标记为从 10.11 开始的函数?
- C++ Version Of Double.longBitsToDouble
- "Missing type specifier - int assumed"无法通过向主函数添加"return 0"来解决
- 由于"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int",我现在无法编
- 如何解决C++中声纳库贝静态代码分析错误"Explicitly define the missing copy constructor, move constructor .."
- luaL_len is missing in Lua 5.1
- 文件存在时的最新检查声明生成输入"is missing"
- Qt5PrintSupportd.dll is missing
- Linux C++编程:为什么连接是.so,生成的可执行依赖库是.so.version
- QT "relocation error" / "no version information available"运行时错误
- 在 OpenGL 中在 Mac 上编译着色器时出现"version not supported"错误
- 使用 Boost ASIO 和 SSL 时出现"Wrong Version Number"错误 (C++)
- 由于错误'wrong version number'无法完成握手
- Windows 10 环境中的"This version of XAudio2 is available only in Windows 8"错误
- MAC OpenGL 着色器错误:"version '150' is not supported "
- "Missing GL version" 从 glewInit() 使用 EGL?
- OpenGL 和 SDL '#version required and missing',但正在调试中工作
- glewInit() 失败与 "Missing GL version" , SDL2 OpenGL 上下文, cygwin 编译器
- GLEW 未初始化;吐出"Missing OpenGL Version"