Ich habe einen kurzen Code erstellt, um ein SDL2-Fenster mit schwarzer Farbe mit OpenGL 4.5 (GLEW API) zu löschen. Allerdings funktioniert es nur, wenn ich meinen Intel-Chipsatz verwende (in diesem Fall sollte eine ältere OpenGL-Version verwendet werden). Das Problem ist, dass wenn ich meine Nvidia GTX 960M benutze, das Fenster immer noch leer ist. Vielleicht habe ich vergessen, etwas zu schreiben, das spezifisch für OpenGL 4.5 ist? Hast du eine Ahnung davon? Hier ist das Codebeispiel:OpenGL 4.5: GlClear() funktioniert nicht (mit SDL2 und GLEW)
DisplayContext::DisplayContext(PropertiesDictionary properties)
{
const string windowTitle = properties.getString("window_title");
const int screenX = properties.getNumber("screen_resolution_x");
const int screenY = properties.getNumber("screen_resolution_y");
const bool isFullscreen = properties.getBoolean("fullscreen");
const int gl_majorVersion = properties.getNumber("gl_major_version");
const int gl_minorVersion = properties.getNumber("gl_minor_version");
const int doublebuffer = properties.getNumber("gl_doublebuffer");
const int depthSize = properties.getNumber("gl_depth_size");
const bool isGlewExperimental = properties.getBoolean("glew_experimental");
SDL_Init(SDL_INIT_VIDEO);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, gl_majorVersion); // 4
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, gl_minorVersion); // 5
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, doublebuffer); // TRUE
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, depthSize); // 24
window = SDL_CreateWindow(
windowTitle.c_str(), SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenX, screenY,
SDL_WINDOW_OPENGL | (isFullscreen ? SDL_WINDOW_FULLSCREEN : NULL));
context = SDL_GL_CreateContext(window);
glewExperimental = isGlewExperimental ? GL_TRUE : GL_FALSE; // TRUE
glewInit();
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SDL_GL_SwapWindow(window);
}
Auf Fehler überprüfen, die von SDL und GL zurückgegeben werden. –
Gelingt 'glewInit' auf beiden Grafikkarten? – SurvivalMachine
@ SurvivalMachine glewInit() gibt auf der GTX960M-Karte FALSE zurück. Und es liefert TRUE auf Intel-Chipsatz. Also scheint der Fehler hier zu sein. Aber ich verstehe nicht warum ... Denkst du, ich sollte eine andere API verwenden? – Ant0nin