SDL2 Невозможно создать окно, так как не удалось найти соответствующий визуал GLX

У меня проблема, так как я сейчас использую Ubuntu Terminal на Windows 10. У меня также установлен XMing в качестве моего X-сервера (я использую XMing для qemu и т. Д.). И я пытаюсь запустить эту программу SDL2. Так что у меня есть это для main.cpp:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <SDL2/SDL.h>
#include <GL/gl.h>

int main(int argc, char *argv[])
{
int final_status = 1;
SDL_Window *window;
SDL_GLContext openGL_context;

if (SDL_Init(SDL_INIT_VIDEO)) {
fprintf(stderr, "Unable to initialize SDL: %s\n",
SDL_GetError());
return 1;
}
window = SDL_CreateWindow("My Demo", SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 640, 480,
SDL_WINDOW_OPENGL);
if (!window) {
fprintf(stderr, "Can't create window: %s\n", SDL_GetError());
goto finished;
}

openGL_context = SDL_GL_CreateContext(window);
if (!openGL_context) {
fprintf(stderr, "Can't create openGL context: %s\n",
SDL_GetError());
goto close_window;
}

/* drawing code removed */

final_status = 0;
SDL_GL_DeleteContext(openGL_context);
close_window:
SDL_DestroyWindow(window);
finished:
SDL_Quit();
fprintf(stdout, "done\n");
fflush(stdout);
return final_status;
}

А потом, когда я бегу g++ main.cpp -lSDL2 я получаю этот вывод:

Can't create window: Couldn't find matching GLX visual
done

Я пытался найти, как решить эту проблему GLX, но не могу найти решение для нее. Помощь будет принята с благодарностью!

8

Решение

Убедитесь, что GLX установлен правильно, запустив glxinfo, Внизу вы найдете список поддерживаемых визуальных элементов. Вот мой:

1 GLX Visuals
visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav
id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat
----------------------------------------------------------------------------
0x022 24 tc  0  24  0 r  y .   8  8  8  0 .  .  0 16  0  0  0  0  0  0 0 None

Попробуйте запустить следующее перед запуском программы SDL2:

export SDL_VIDEO_X11_VISUALID=

Это заставляет SDL идти по другому пути кода, чтобы найти визуальное. Вы также можете попробовать жестко закодировать визуальный идентификатор для визуального glxinfo:

export SDL_VIDEO_X11_VISUALID=0x022
8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]