2016-12-27 7 views
5

Mam problem, ponieważ obecnie korzystam z Ubuntu Terminal na Windows 10. Mam również XMing zainstalowany jako mój X-serwer (używam XMing dla qemu, itp...). I próbuję uruchomić ten program SDL2. Więc mam to za main.cpp:SDL2 Nie można utworzyć okna, ponieważ nie może znaleźć pasującego GLX wizualnego

#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; 
} 

A potem, kiedy biegnę g++ main.cpp -lSDL2, otrzymuję ten wynik:

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

Próbowałem szukać, jak rozwiązać ten problem, ale może GLX nie wydaje się znaleźć dla niego rozwiązanie. Pomoc byłaby bardzo ceniona!

+0

miałem ten błąd kiedyś, spowodowane przez nie mający wystarczający sterownika karty graficznej lub urządzenia dostępne, jak starałem się go uruchomić poprzez źle skonfigurowana maszyna wirtualna. Przepraszam, że nie mogę być bardziej konkretny. – ygrichman

+0

@ygrichman hmm ... Cóż, to tylko cześć na świecie, i myślę, że mam dobrą kartę graficzną. A to jest Wsl, więc jest w oknach nie wirtualnych – amanuel2

Odpowiedz

6

Upewnij się, że GLX jest poprawnie zainstalowany, uruchamiając glxinfo. U dołu znajdziesz listę obsługiwanych wizualizacji. Oto moje:

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 

Spróbuj uruchomić następujące przed uruchomieniem programu SDL2:

export SDL_VIDEO_X11_VISUALID= 

Powoduje SDL zejść inną drogę, aby znaleźć kod wizualny. Można również spróbować hardcoding wizualny na id wizualnej z glxinfo:

export SDL_VIDEO_X11_VISUALID=0x022 
Powiązane problemy