在 SDL2 中使用 glew
Using glew with SDL2
当我想同时使用 SDL2 和 glew 时,我在 glewInit()
上收到以下错误:
Missing GL version
重现错误的示例:
#include <iostream>
#define NO_SDL_GLEXT
#include <GL/glew.h>
#include "SDL2/SDL.h"
#include "SDL/SDL_opengl.h"
int main(int argc, char **argv)
{
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
std::cout << "SDL could not initialize! SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); // Does nothing
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); // Does nothing
SDL_Window *window = SDL_CreateWindow("Example for SO", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL);
if(window == nullptr)
{
std::cout << "Window could not be created! SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
glewExperimental = GL_TRUE;
auto init_res = glewInit();
if(init_res != GLEW_OK)
{
std::cout << glewGetErrorString(glewInit()) << std::endl;
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
编译:
c++ (Debian 6.3.0-11) 6.3.0 (gcc)
flags: -std=c++17
libraries:
-L/usr/local/lib -lSDL2 -Wl,-rpath=/usr/local/lib -lGLEW
您需要创建一个 GL 上下文。尝试
auto ctx = SDL_GL_CreateContext(window);
在 glewInit()
调用之前。
当我想同时使用 SDL2 和 glew 时,我在 glewInit()
上收到以下错误:
Missing GL version
重现错误的示例:
#include <iostream>
#define NO_SDL_GLEXT
#include <GL/glew.h>
#include "SDL2/SDL.h"
#include "SDL/SDL_opengl.h"
int main(int argc, char **argv)
{
if(SDL_Init(SDL_INIT_VIDEO) < 0)
{
std::cout << "SDL could not initialize! SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3); // Does nothing
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3); // Does nothing
SDL_Window *window = SDL_CreateWindow("Example for SO", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 800, 600, SDL_WINDOW_OPENGL);
if(window == nullptr)
{
std::cout << "Window could not be created! SDL Error: " << SDL_GetError() << std::endl;
return -1;
}
glewExperimental = GL_TRUE;
auto init_res = glewInit();
if(init_res != GLEW_OK)
{
std::cout << glewGetErrorString(glewInit()) << std::endl;
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
编译:
c++ (Debian 6.3.0-11) 6.3.0 (gcc)
flags: -std=c++17
libraries:
-L/usr/local/lib -lSDL2 -Wl,-rpath=/usr/local/lib -lGLEW
您需要创建一个 GL 上下文。尝试
auto ctx = SDL_GL_CreateContext(window);
在 glewInit()
调用之前。