現在Windows10でUbuntuターミナルを実行しているため、問題が発生します。XサーバーとしてXMingもインストールしています(qemuなどにXMingを使用しています...)。そして、私はこの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問題を解決する方法を検索しようとしましたが、解決策が見つからないようです。助けていただければ幸いです!
glxinfo
を実行して、GLXが正しくインストールされていることを確認します。下部に、サポートされているビジュアルのリストがあります。これが私のものです:
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
からビジュアルIDにハードコーディングすることもできます。
export SDL_VIDEO_X11_VISUALID=0x022